home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 19 / Mac Magazin and MacEasy Magazine CD - Issue 19.iso / Wissenschaft & Technik / BibTeX ƒ / Source code / bibtex.cc < prev    next >
Text File  |  1996-02-18  |  232KB  |  10,172 lines

  1. //###################################################################
  2. //
  3. // FILE: "BibTeX.cc"
  4. //                                   created: 2/2/96 {10:03:20 am} 
  5. //                               last update: 18/2/96 {8:21:17 pm} 
  6. // Author: Vince Darley
  7. // E-mail: <mailto:vince@das.harvard.edu>
  8. //   mail: Division of Applied Sciences, Harvard University
  9. //         Oxford Street, Cambridge MA 02138, USA
  10. // <http://www.das.harvard.edu/users/students/Vincent_Darley/>
  11. // 
  12. // This is the basic source to BibTeX, grabbed off an old mac port
  13. // on CTAN in C, which I ported to C++ (proper function
  14. // declarations and prototypes), and ported further to compile
  15. // under Codewarrior 8.
  16. // 
  17. // The code and porting is a bit of a mess. First because the code
  18. // comes out of web2c, and second because this is a port of a port.
  19. // Most of the work is actually just done by a bunch of '#define's
  20. // which get rid of all unix stdio stuff.
  21. // 
  22. //###################################################################
  23.  
  24. // uncomment this to have a close look
  25. // at what's going on and generate
  26. // enormous .blg files
  27. //#define TRACE
  28.  
  29. #undef __profile__
  30.  
  31. #ifdef __profile__
  32. #pragma profile on
  33. #endif
  34.  
  35. // we call WaitNextEvent occasionally
  36. #define GIVE_UP_TIME
  37.  
  38. #include "BibTeX.h"
  39. jmp_buf jmp9998, jmp32; int lab31=0;
  40. /* 9998 9999 31 32 9932 */ 
  41.  
  42. #include "BibTeX.p"
  43. #include "bibutils.h"
  44. #include "globals.h"
  45. #include "file-io.h"
  46. #include <string.h>
  47.  
  48. #define ReverseFPuts(a,b) FPutS(b,a)
  49. #define fclose(a) CloseFile(a)
  50. extern const char      *aux_fn;
  51. #ifdef stdout
  52. #undef stdout
  53. #endif
  54. // so that stdout actually goes to a log window
  55. #define stdout 0
  56. //#define lineread(f,size) ReadLine(f)
  57.  
  58. integer bad  ; 
  59. schar history  ; 
  60. integer errcount  ; 
  61. ASCIIcode xord[128]  ; 
  62. char xchr[128]  ; 
  63. lextype lexclass[128]  ; 
  64. idtype idclass[128]  ; 
  65. integer charwidth[128]  ; 
  66. /* 
  67.  * Changed by Vince from stringwidth -> bibstringwidth 
  68.  * to avoid a name clash.
  69.  */
  70. integer bibstringwidth  ; 
  71. char nameoffile[1025], realnameoffile[1025]  ; 
  72. short namelength  ; 
  73. short nameptr  ; 
  74. buftype buffer  ; 
  75. bufpointer last  ; 
  76. buftype svbuffer  ; 
  77. bufpointer svptr1  ; 
  78. bufpointer svptr2  ; 
  79. integer tmpptr, tmpendptr  ; 
  80. ASCIIcode *strpool; 
  81. poolpointer strstart[maxstrings + 1]  ; 
  82. poolpointer poolptr  ; 
  83. strnumber strptr  ; 
  84. strnumber strnum  ; 
  85. poolpointer pptr1, pptr2  ; 
  86. hashpointer *hashnext;
  87. strnumber *hashtext;
  88. strilk *hashilk;
  89. integer *ilkinfo;
  90. short hashused  ; 
  91. boolean hashfound  ; 
  92. hashloc dummyloc  ; 
  93. strnumber sauxextension  ; 
  94. strnumber slogextension  ; 
  95. strnumber sbblextension  ; 
  96. strnumber sbstextension  ; 
  97. strnumber sbibextension  ; 
  98. strnumber sbstarea  ; 
  99. strnumber sbibarea  ; 
  100. hashloc predefloc  ; 
  101. integer commandnum  ; 
  102. bufpointer bufptr1  ; 
  103. bufpointer bufptr2  ; 
  104. schar scanresult  ; 
  105. integer tokenvalue  ; 
  106. short auxnamelength  ; 
  107. alphafile auxfile[auxstacksize + 1]  ; 
  108. strnumber auxlist[auxstacksize + 1]  ; 
  109. integer auxlnstack[auxstacksize + 1]  ; 
  110. auxnumber auxptr  ; 
  111. strnumber toplevstr  ; 
  112. alphafile logfile  ; 
  113. alphafile bblfile  ; 
  114. strnumber biblist[maxbibfiles + 1]  ; 
  115. bibnumber bibptr  ; 
  116. bibnumber numbibfiles  ; 
  117. boolean bibseen  ; 
  118. alphafile bibfile[maxbibfiles + 1]  ; 
  119. boolean bstseen  ; 
  120. strnumber bststr  ; 
  121. alphafile bstfile  ; 
  122. strnumber *citelist; 
  123. citenumber citeptr  ; 
  124. citenumber entryciteptr  ; 
  125. citenumber numcites  ; 
  126. citenumber oldnumcites  ; 
  127. boolean citationseen  ; 
  128. hashloc citeloc  ; 
  129. hashloc lcciteloc  ; 
  130. hashloc lcxciteloc  ; 
  131. boolean citefound  ; 
  132. boolean allentries  ; 
  133. citenumber allmarker  ; 
  134. integer bbllinenum  ; 
  135. integer bstlinenum  ; 
  136. hashloc fnloc  ; 
  137. hashloc wizloc  ; 
  138. hashloc literalloc  ; 
  139. hashloc macronameloc  ; 
  140. hashloc macrodefloc  ;
  141. fnclass *fntype; 
  142. wizfnloc wizdefptr  ; 
  143. wizfnloc wizfnptr  ; 
  144. hashptr2 *wizfunctions; 
  145. intentloc intentptr  ; 
  146. integer *entryints; 
  147. intentloc numentints  ; 
  148. strentloc strentptr  ; 
  149. ASCIIcode (*entrystrs)[entstrsize + 1]  ; 
  150. strentloc numentstrs  ; 
  151. schar strglbptr  ; 
  152. strnumber glbstrptr[10]  ; 
  153. ASCIIcode (*globalstrs)[globstrsize + 1]  ; 
  154. integer glbstrend[10]  ; 
  155. schar numglbstrs  ; 
  156. fieldloc fieldptr  ; 
  157. fieldloc fieldparentptr, fieldendptr  ; 
  158. citenumber citeparentptr, citexptr  ; 
  159. strnumber *fieldinfo; 
  160. fieldloc numfields  ; 
  161. fieldloc numpredefinedfields  ; 
  162. fieldloc crossrefnum  ; 
  163. boolean nofields  ; 
  164. boolean entryseen  ; 
  165. boolean readseen  ; 
  166. boolean readperformed  ; 
  167. boolean readingcompleted  ; 
  168. boolean readcompleted  ; 
  169. integer implfnnum  ; 
  170. integer biblinenum  ; 
  171. hashloc entrytypeloc  ; 
  172. hashptr2 typelist[maxcites + 1]  ; 
  173. boolean typeexists  ; 
  174. boolean entryexists[maxcites + 1]  ; 
  175. boolean storeentry  ; 
  176. hashloc fieldnameloc  ; 
  177. hashloc fieldvalloc  ; 
  178. boolean storefield  ; 
  179. boolean storetoken  ; 
  180. ASCIIcode rightouterdelim  ; 
  181. ASCIIcode rightstrdelim  ; 
  182. boolean atbibcommand  ; 
  183. hashloc curmacroloc  ; 
  184. strnumber *citeinfo; 
  185. boolean citehashfound  ; 
  186. bibnumber preambleptr  ; 
  187. bibnumber numpreamblestrings  ; 
  188. integer bibbracelevel  ; 
  189. integer litstack[litstksize + 1]  ; 
  190. stktype litstktype[litstksize + 1]  ; 
  191. litstkloc litstkptr  ; 
  192. strnumber cmdstrptr  ; 
  193. integer entchrptr  ; 
  194. integer globchrptr  ; 
  195. buftype exbuf  ; 
  196. bufpointer exbufptr  ; 
  197. bufpointer exbuflength  ; 
  198. buftype outbuf  ; 
  199. bufpointer outbufptr  ; 
  200. bufpointer outbuflength  ; 
  201. boolean messwithentries  ; 
  202. citenumber sortciteptr  ; 
  203. strentloc sortkeynum  ; 
  204. integer bracelevel  ; 
  205. hashloc bequals  ; 
  206. hashloc bgreaterthan  ; 
  207. hashloc blessthan  ; 
  208. hashloc bplus  ; 
  209. hashloc bminus  ; 
  210. hashloc bconcatenate  ; 
  211. hashloc bgets  ; 
  212. hashloc baddperiod  ; 
  213. hashloc bcalltype  ; 
  214. hashloc bchangecase  ; 
  215. hashloc bchrtoint  ; 
  216. hashloc bcite  ; 
  217. hashloc bduplicate  ; 
  218. hashloc bempty  ; 
  219. hashloc bformatname  ; 
  220. hashloc bif  ; 
  221. hashloc binttochr  ; 
  222. hashloc binttostr  ; 
  223. hashloc bmissing  ; 
  224. hashloc bnewline  ; 
  225. hashloc bnumnames  ; 
  226. hashloc bpop  ; 
  227. hashloc bpreamble  ; 
  228. hashloc bpurify  ; 
  229. hashloc bquote  ; 
  230. hashloc bskip  ; 
  231. hashloc bstack  ; 
  232. hashloc bsubstring  ; 
  233. hashloc bswap  ; 
  234. hashloc btextlength  ; 
  235. hashloc btextprefix  ; 
  236. hashloc btopstack  ; 
  237. hashloc btype  ; 
  238. hashloc bwarning  ; 
  239. hashloc bwhile  ; 
  240. hashloc bwidth  ; 
  241. hashloc bwrite  ; 
  242. hashloc bdefault  ; 
  243. #ifdef STAT
  244. hashloc bltinloc[numbltinfns + 1]  ; 
  245. integer executioncount[numbltinfns + 1]  ; 
  246. integer totalexcount  ; 
  247. bltinrange bltinptr  ; 
  248. #endif /* STAT */
  249. strnumber snull  ; 
  250. strnumber sdefault  ; 
  251. strnumber st  ; 
  252. strnumber sl  ; 
  253. strnumber su  ; 
  254. strnumber spreamble[maxbibfiles + 1]  ; 
  255. integer poplit1, poplit2, poplit3  ; 
  256. stktype poptyp1, poptyp2, poptyp3  ; 
  257. poolpointer spptr  ; 
  258. poolpointer spxptr1, spxptr2  ; 
  259. poolpointer spend  ; 
  260. poolpointer splength, sp2length  ; 
  261. integer spbracelevel  ; 
  262. bufpointer exbufxptr, exbufyptr  ; 
  263. hashloc controlseqloc  ; 
  264. boolean precedingwhite  ; 
  265. boolean andfound  ; 
  266. integer numnames  ; 
  267. bufpointer namebfptr  ; 
  268. bufpointer namebfxptr, namebfyptr  ; 
  269. integer nmbracelevel  ; 
  270. bufpointer *nametok; 
  271. ASCIIcode *namesepchar; 
  272. bufpointer numtokens  ; 
  273. boolean tokenstarting  ; 
  274. boolean alphafound  ; 
  275. boolean doubleletter, endofgroup, tobewritten  ; 
  276. bufpointer firststart  ; 
  277. bufpointer firstend  ; 
  278. bufpointer lastend  ; 
  279. bufpointer vonstart  ; 
  280. bufpointer vonend  ; 
  281. bufpointer jrend  ; 
  282. bufpointer curtoken, lasttoken  ; 
  283. boolean usedefault  ; 
  284. bufpointer numcommas  ; 
  285. bufpointer comma1, comma2  ; 
  286. bufpointer numtextchars  ; 
  287. schar conversiontype  ; 
  288. boolean prevcolon  ; 
  289.  
  290. #include "coerce.h"
  291.  
  292. void bstentrycommand (void) {
  293.     /* 10 */ if ( ( entryseen ) ) 
  294.   {
  295.     {
  296.       (void) ReverseFPuts( logfile ,  "Illegal, another entry command" ) ; 
  297.       (void) FPrintFStdErr(  "Illegal, another entry command" ) ; 
  298.     } 
  299.     {
  300.       bsterrprintandlookfo () ; 
  301.       goto lab10 ; 
  302.     } 
  303.   } 
  304.   entryseen = true ; 
  305.   {
  306.     if ( ( ! eatbstwhitespace () ) ) 
  307.     {
  308.       eatbstprint () ; 
  309.       {
  310.     {
  311.       (void) ReverseFPuts( logfile ,  "entry" ) ; 
  312.       (void) FPrintFStdErr(  "entry" ) ; 
  313.     } 
  314.     {
  315.       bsterrprintandlookfo () ; 
  316.       goto lab10 ; 
  317.     } 
  318.       } 
  319.     } 
  320.   } 
  321.   {
  322.     {
  323.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  324.       {
  325.     bstleftbraceprint () ; 
  326.     {
  327.       {
  328.         (void) ReverseFPuts( logfile ,  "entry" ) ; 
  329.         (void) FPrintFStdErr(  "entry" ) ; 
  330.       } 
  331.       {
  332.         bsterrprintandlookfo () ; 
  333.         goto lab10 ; 
  334.       } 
  335.     } 
  336.       } 
  337.       incr ( bufptr2 ) ; 
  338.     } 
  339.     {
  340.       if ( ( ! eatbstwhitespace () ) ) 
  341.       {
  342.     eatbstprint () ; 
  343.     {
  344.       {
  345.         (void) ReverseFPuts( logfile ,  "entry" ) ; 
  346.         (void) FPrintFStdErr(  "entry" ) ; 
  347.       } 
  348.       {
  349.         bsterrprintandlookfo () ; 
  350.         goto lab10 ; 
  351.       } 
  352.     } 
  353.       } 
  354.     } 
  355.     while ( ( buffer [ bufptr2 ] != 125 ) ) {
  356.     
  357.       {
  358.     scanidentifier ( 125 , 37 , 37 ) ; 
  359.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  360.     ; 
  361.     else {
  362.         
  363.       bstidprint () ; 
  364.       {
  365.         {
  366.           (void) ReverseFPuts( logfile ,  "entry" ) ; 
  367.           (void) FPrintFStdErr(  "entry" ) ; 
  368.         } 
  369.         {
  370.           bsterrprintandlookfo () ; 
  371.           goto lab10 ; 
  372.         } 
  373.       } 
  374.     } 
  375.       } 
  376.       {
  377.     ;
  378. #ifdef TRACE
  379.     {
  380.       outtoken ( logfile ) ; 
  381.     } 
  382.     {
  383.       (void) FPrintF( logfile , "%s\r",  " is a field" ) ; 
  384.     } 
  385. #endif /* TRACE */
  386.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  387.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  388.     true ) ; 
  389.     {
  390.       if ( ( hashfound ) ) 
  391.       {
  392.         alreadyseenfunctionp ( fnloc ) ; 
  393.         goto lab10 ; 
  394.       } 
  395.     } 
  396.     fntype [ fnloc ] = 4 ; 
  397.     ilkinfo [ fnloc ] = numfields ; 
  398.     incr ( numfields ) ; 
  399.       } 
  400.       {
  401.     if ( ( ! eatbstwhitespace () ) ) 
  402.     {
  403.       eatbstprint () ; 
  404.       {
  405.         {
  406.           (void) ReverseFPuts( logfile ,  "entry" ) ; 
  407.           (void) FPrintFStdErr(  "entry" ) ; 
  408.         } 
  409.         {
  410.           bsterrprintandlookfo () ; 
  411.           goto lab10 ; 
  412.         } 
  413.       } 
  414.     } 
  415.       } 
  416.     } 
  417.     incr ( bufptr2 ) ; 
  418.   } 
  419.   {
  420.     if ( ( ! eatbstwhitespace () ) ) 
  421.     {
  422.       eatbstprint () ; 
  423.       {
  424.     {
  425.       (void) ReverseFPuts( logfile ,  "entry" ) ; 
  426.       (void) FPrintFStdErr(  "entry" ) ; 
  427.     } 
  428.     {
  429.       bsterrprintandlookfo () ; 
  430.       goto lab10 ; 
  431.     } 
  432.       } 
  433.     } 
  434.   } 
  435.   if ( ( numfields == numpredefinedfields ) ) 
  436.   {
  437.     {
  438.       (void) ReverseFPuts( logfile ,  "Warning--I didn't find any fields" ) ; 
  439.       (void) FPrintFStdErr(  "Warning--I didn't find any fields" ) ; 
  440.     } 
  441.     bstwarnprint () ; 
  442.   } 
  443.   {
  444.     {
  445.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  446.       {
  447.     bstleftbraceprint () ; 
  448.     {
  449.       {
  450.         (void) ReverseFPuts( logfile ,  "entry" ) ; 
  451.         (void) FPrintFStdErr(  "entry" ) ; 
  452.       } 
  453.       {
  454.         bsterrprintandlookfo () ; 
  455.         goto lab10 ; 
  456.       } 
  457.     } 
  458.       } 
  459.       incr ( bufptr2 ) ; 
  460.     } 
  461.     {
  462.       if ( ( ! eatbstwhitespace () ) ) 
  463.       {
  464.     eatbstprint () ; 
  465.     {
  466.       {
  467.         (void) ReverseFPuts( logfile ,  "entry" ) ; 
  468.         (void) FPrintFStdErr(  "entry" ) ; 
  469.       } 
  470.       {
  471.         bsterrprintandlookfo () ; 
  472.         goto lab10 ; 
  473.       } 
  474.     } 
  475.       } 
  476.     } 
  477.     while ( ( buffer [ bufptr2 ] != 125 ) ) {
  478.     
  479.       {
  480.     scanidentifier ( 125 , 37 , 37 ) ; 
  481.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  482.     ; 
  483.     else {
  484.         
  485.       bstidprint () ; 
  486.       {
  487.         {
  488.           (void) ReverseFPuts( logfile ,  "entry" ) ; 
  489.           (void) FPrintFStdErr(  "entry" ) ; 
  490.         } 
  491.         {
  492.           bsterrprintandlookfo () ; 
  493.           goto lab10 ; 
  494.         } 
  495.       } 
  496.     } 
  497.       } 
  498.       {
  499.     ;
  500. #ifdef TRACE
  501.     {
  502.       outtoken ( logfile ) ; 
  503.     } 
  504.     {
  505.       (void) FPrintF( logfile , "%s\r",  " is an integer entry-variable" ) ; 
  506.     } 
  507. #endif /* TRACE */
  508.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  509.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  510.     true ) ; 
  511.     {
  512.       if ( ( hashfound ) ) 
  513.       {
  514.         alreadyseenfunctionp ( fnloc ) ; 
  515.         goto lab10 ; 
  516.       } 
  517.     } 
  518.     fntype [ fnloc ] = 5 ; 
  519.     ilkinfo [ fnloc ] = numentints ; 
  520.     incr ( numentints ) ; 
  521.       } 
  522.       {
  523.     if ( ( ! eatbstwhitespace () ) ) 
  524.     {
  525.       eatbstprint () ; 
  526.       {
  527.         {
  528.           (void) ReverseFPuts( logfile ,  "entry" ) ; 
  529.           (void) FPrintFStdErr(  "entry" ) ; 
  530.         } 
  531.         {
  532.           bsterrprintandlookfo () ; 
  533.           goto lab10 ; 
  534.         } 
  535.       } 
  536.     } 
  537.       } 
  538.     } 
  539.     incr ( bufptr2 ) ; 
  540.   } 
  541.   {
  542.     if ( ( ! eatbstwhitespace () ) ) 
  543.     {
  544.       eatbstprint () ; 
  545.       {
  546.     {
  547.       (void) ReverseFPuts( logfile ,  "entry" ) ; 
  548.       (void) FPrintFStdErr(  "entry" ) ; 
  549.     } 
  550.     {
  551.       bsterrprintandlookfo () ; 
  552.       goto lab10 ; 
  553.     } 
  554.       } 
  555.     } 
  556.   } 
  557.   {
  558.     {
  559.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  560.       {
  561.     bstleftbraceprint () ; 
  562.     {
  563.       {
  564.         (void) ReverseFPuts( logfile ,  "entry" ) ; 
  565.         (void) FPrintFStdErr(  "entry" ) ; 
  566.       } 
  567.       {
  568.         bsterrprintandlookfo () ; 
  569.         goto lab10 ; 
  570.       } 
  571.     } 
  572.       } 
  573.       incr ( bufptr2 ) ; 
  574.     } 
  575.     {
  576.       if ( ( ! eatbstwhitespace () ) ) 
  577.       {
  578.     eatbstprint () ; 
  579.     {
  580.       {
  581.         (void) ReverseFPuts( logfile ,  "entry" ) ; 
  582.         (void) FPrintFStdErr(  "entry" ) ; 
  583.       } 
  584.       {
  585.         bsterrprintandlookfo () ; 
  586.         goto lab10 ; 
  587.       } 
  588.     } 
  589.       } 
  590.     } 
  591.     while ( ( buffer [ bufptr2 ] != 125 ) ) {
  592.     
  593.       {
  594.     scanidentifier ( 125 , 37 , 37 ) ; 
  595.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  596.     ; 
  597.     else {
  598.         
  599.       bstidprint () ; 
  600.       {
  601.         {
  602.           (void) ReverseFPuts( logfile ,  "entry" ) ; 
  603.           (void) FPrintFStdErr(  "entry" ) ; 
  604.         } 
  605.         {
  606.           bsterrprintandlookfo () ; 
  607.           goto lab10 ; 
  608.         } 
  609.       } 
  610.     } 
  611.       } 
  612.       {
  613.     ;
  614. #ifdef TRACE
  615.     {
  616.       outtoken ( logfile ) ; 
  617.     } 
  618.     {
  619.       (void) FPrintF( logfile , "%s\r",  " is a string entry-variable" ) ; 
  620.     } 
  621. #endif /* TRACE */
  622.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  623.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  624.     true ) ; 
  625.     {
  626.       if ( ( hashfound ) ) 
  627.       {
  628.         alreadyseenfunctionp ( fnloc ) ; 
  629.         goto lab10 ; 
  630.       } 
  631.     } 
  632.     fntype [ fnloc ] = 6 ; 
  633.     ilkinfo [ fnloc ] = numentstrs ; 
  634.     incr ( numentstrs ) ; 
  635.       } 
  636.       {
  637.     if ( ( ! eatbstwhitespace () ) ) 
  638.     {
  639.       eatbstprint () ; 
  640.       {
  641.         {
  642.           (void) ReverseFPuts( logfile ,  "entry" ) ; 
  643.           (void) FPrintFStdErr(  "entry" ) ; 
  644.         } 
  645.         {
  646.           bsterrprintandlookfo () ; 
  647.           goto lab10 ; 
  648.         } 
  649.       } 
  650.     } 
  651.       } 
  652.     } 
  653.     incr ( bufptr2 ) ; 
  654.   } 
  655.   lab10: ; 
  656. boolean badargumenttoken () {
  657.     /* 10 */ register boolean Result; Result = true 
  658.   ; 
  659.   lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  660.   fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , false ) 
  661.   ; 
  662.   if ( ( ! hashfound ) ) 
  663.   {
  664.     printatoken () ; 
  665.     {
  666.       {
  667.     (void) ReverseFPuts( logfile ,  " is an unknown function" ) ; 
  668.     (void) FPrintFStdErr(  " is an unknown function" ) ; 
  669.       } 
  670.       {
  671.     bsterrprintandlookfo () ; 
  672.     goto lab10 ; 
  673.       } 
  674.     } 
  675.   } 
  676.   else if ( ( ( fntype [ fnloc ] != 0 ) && ( fntype [ fnloc ] != 1 ) ) ) 
  677.   {
  678.     printatoken () ; 
  679.     {
  680.       (void) ReverseFPuts( logfile ,  " has bad function type " ) ; 
  681.       (void) FPrintFStdErr(  " has bad function type " ) ; 
  682.     } 
  683.     printfnclass ( fnloc ) ; 
  684.     {
  685.       bsterrprintandlookfo () ; 
  686.       goto lab10 ; 
  687.     } 
  688.   } 
  689.   Result = false ; 
  690.   lab10: ; 
  691.   return(Result) ; 
  692. void bstexecutecommand (void) {
  693.     /* 10 */ if ( ( ! readseen ) ) 
  694.   {
  695.     {
  696.       (void) ReverseFPuts( logfile ,  "Illegal, execute command before read command" ) ; 
  697.       (void) FPrintFStdErr(  "Illegal, execute command before read command" ) ; 
  698.     } 
  699.     {
  700.       bsterrprintandlookfo () ; 
  701.       goto lab10 ; 
  702.     } 
  703.   } 
  704.   {
  705.     if ( ( ! eatbstwhitespace () ) ) 
  706.     {
  707.       eatbstprint () ; 
  708.       {
  709.     {
  710.       (void) ReverseFPuts( logfile ,  "execute" ) ; 
  711.       (void) FPrintFStdErr(  "execute" ) ; 
  712.     } 
  713.     {
  714.       bsterrprintandlookfo () ; 
  715.       goto lab10 ; 
  716.     } 
  717.       } 
  718.     } 
  719.   } 
  720.   {
  721.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  722.     {
  723.       bstleftbraceprint () ; 
  724.       {
  725.     {
  726.       (void) ReverseFPuts( logfile ,  "execute" ) ; 
  727.       (void) FPrintFStdErr(  "execute" ) ; 
  728.     } 
  729.     {
  730.       bsterrprintandlookfo () ; 
  731.       goto lab10 ; 
  732.     } 
  733.       } 
  734.     } 
  735.     incr ( bufptr2 ) ; 
  736.   } 
  737.   {
  738.     if ( ( ! eatbstwhitespace () ) ) 
  739.     {
  740.       eatbstprint () ; 
  741.       {
  742.     {
  743.       (void) ReverseFPuts( logfile ,  "execute" ) ; 
  744.       (void) FPrintFStdErr(  "execute" ) ; 
  745.     } 
  746.     {
  747.       bsterrprintandlookfo () ; 
  748.       goto lab10 ; 
  749.     } 
  750.       } 
  751.     } 
  752.   } 
  753.   {
  754.     scanidentifier ( 125 , 37 , 37 ) ; 
  755.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  756.     ; 
  757.     else {
  758.     
  759.       bstidprint () ; 
  760.       {
  761.     {
  762.       (void) ReverseFPuts( logfile ,  "execute" ) ; 
  763.       (void) FPrintFStdErr(  "execute" ) ; 
  764.     } 
  765.     {
  766.       bsterrprintandlookfo () ; 
  767.       goto lab10 ; 
  768.     } 
  769.       } 
  770.     } 
  771.   } 
  772.   {
  773.     ;
  774. #ifdef TRACE
  775.     {
  776.       outtoken ( logfile ) ; 
  777.     } 
  778.     {
  779.       (void) FPrintF( logfile , "%s\r",  " is a to be executed function" ) ; 
  780.     } 
  781. #endif /* TRACE */
  782.     if ( ( badargumenttoken () ) ) 
  783.     goto lab10 ; 
  784.   } 
  785.   {
  786.     if ( ( ! eatbstwhitespace () ) ) 
  787.     {
  788.       eatbstprint () ; 
  789.       {
  790.     {
  791.       (void) ReverseFPuts( logfile ,  "execute" ) ; 
  792.       (void) FPrintFStdErr(  "execute" ) ; 
  793.     } 
  794.     {
  795.       bsterrprintandlookfo () ; 
  796.       goto lab10 ; 
  797.     } 
  798.       } 
  799.     } 
  800.   } 
  801.   {
  802.     if ( ( buffer [ bufptr2 ] != 125 ) ) 
  803.     {
  804.       bstrightbraceprint () ; 
  805.       {
  806.     {
  807.       (void) ReverseFPuts( logfile ,  "execute" ) ; 
  808.       (void) FPrintFStdErr(  "execute" ) ; 
  809.     } 
  810.     {
  811.       bsterrprintandlookfo () ; 
  812.       goto lab10 ; 
  813.     } 
  814.       } 
  815.     } 
  816.     incr ( bufptr2 ) ; 
  817.   } 
  818.   {
  819.     initcommandexecution () ; 
  820.     messwithentries = false ; 
  821.     executefn ( fnloc ) ; 
  822.     checkcommandexecutio () ; 
  823.   } 
  824.   lab10: ; 
  825. void bstfunctioncommand (void) {
  826.     /* 10 */ { 
  827.     if ( ( ! eatbstwhitespace () ) ) 
  828.     {
  829.       eatbstprint () ; 
  830.       {
  831.     {
  832.       (void) ReverseFPuts( logfile ,  "function" ) ; 
  833.       (void) FPrintFStdErr(  "function" ) ; 
  834.     } 
  835.     {
  836.       bsterrprintandlookfo () ; 
  837.       goto lab10 ; 
  838.     } 
  839.       } 
  840.     } 
  841.   } 
  842.   {
  843.     {
  844.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  845.       {
  846.     bstleftbraceprint () ; 
  847.     {
  848.       {
  849.         (void) ReverseFPuts( logfile ,  "function" ) ; 
  850.         (void) FPrintFStdErr(  "function" ) ; 
  851.       } 
  852.       {
  853.         bsterrprintandlookfo () ; 
  854.         goto lab10 ; 
  855.       } 
  856.     } 
  857.       } 
  858.       incr ( bufptr2 ) ; 
  859.     } 
  860.     {
  861.       if ( ( ! eatbstwhitespace () ) ) 
  862.       {
  863.     eatbstprint () ; 
  864.     {
  865.       {
  866.         (void) ReverseFPuts( logfile ,  "function" ) ; 
  867.         (void) FPrintFStdErr(  "function" ) ; 
  868.       } 
  869.       {
  870.         bsterrprintandlookfo () ; 
  871.         goto lab10 ; 
  872.       } 
  873.     } 
  874.       } 
  875.     } 
  876.     {
  877.       scanidentifier ( 125 , 37 , 37 ) ; 
  878.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  879.       ; 
  880.       else {
  881.       
  882.     bstidprint () ; 
  883.     {
  884.       {
  885.         (void) ReverseFPuts( logfile ,  "function" ) ; 
  886.         (void) FPrintFStdErr(  "function" ) ; 
  887.       } 
  888.       {
  889.         bsterrprintandlookfo () ; 
  890.         goto lab10 ; 
  891.       } 
  892.     } 
  893.       } 
  894.     } 
  895.     {
  896.     ;
  897. #ifdef TRACE
  898.       {
  899.     outtoken ( logfile ) ; 
  900.       } 
  901.       {
  902.     (void) FPrintF( logfile , "%s\r",  " is a wizard-defined function" ) ; 
  903.       } 
  904. #endif /* TRACE */
  905.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  906.       wizloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  907.       true ) ; 
  908.       {
  909.     if ( ( hashfound ) ) 
  910.     {
  911.       alreadyseenfunctionp ( wizloc ) ; 
  912.       goto lab10 ; 
  913.     } 
  914.       } 
  915.       fntype [ wizloc ] = 1 ; 
  916.       if ( ( hashtext [ wizloc ] == sdefault ) ) 
  917.       bdefault = wizloc ; 
  918.     } 
  919.     {
  920.       if ( ( ! eatbstwhitespace () ) ) 
  921.       {
  922.     eatbstprint () ; 
  923.     {
  924.       {
  925.         (void) ReverseFPuts( logfile ,  "function" ) ; 
  926.         (void) FPrintFStdErr(  "function" ) ; 
  927.       } 
  928.       {
  929.         bsterrprintandlookfo () ; 
  930.         goto lab10 ; 
  931.       } 
  932.     } 
  933.       } 
  934.     } 
  935.     {
  936.       if ( ( buffer [ bufptr2 ] != 125 ) ) 
  937.       {
  938.     bstrightbraceprint () ; 
  939.     {
  940.       {
  941.         (void) ReverseFPuts( logfile ,  "function" ) ; 
  942.         (void) FPrintFStdErr(  "function" ) ; 
  943.       } 
  944.       {
  945.         bsterrprintandlookfo () ; 
  946.         goto lab10 ; 
  947.       } 
  948.     } 
  949.       } 
  950.       incr ( bufptr2 ) ; 
  951.     } 
  952.   } 
  953.   {
  954.     if ( ( ! eatbstwhitespace () ) ) 
  955.     {
  956.       eatbstprint () ; 
  957.       {
  958.     {
  959.       (void) ReverseFPuts( logfile ,  "function" ) ; 
  960.       (void) FPrintFStdErr(  "function" ) ; 
  961.     } 
  962.     {
  963.       bsterrprintandlookfo () ; 
  964.       goto lab10 ; 
  965.     } 
  966.       } 
  967.     } 
  968.   } 
  969.   {
  970.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  971.     {
  972.       bstleftbraceprint () ; 
  973.       {
  974.     {
  975.       (void) ReverseFPuts( logfile ,  "function" ) ; 
  976.       (void) FPrintFStdErr(  "function" ) ; 
  977.     } 
  978.     {
  979.       bsterrprintandlookfo () ; 
  980.       goto lab10 ; 
  981.     } 
  982.       } 
  983.     } 
  984.     incr ( bufptr2 ) ; 
  985.   } 
  986.   scanfndef ( wizloc ) ; 
  987.   lab10: ; 
  988. void bstintegerscommand (void) {
  989.     /* 10 */ { 
  990.     if ( ( ! eatbstwhitespace () ) ) 
  991.     {
  992.       eatbstprint () ; 
  993.       {
  994.     {
  995.       (void) ReverseFPuts( logfile ,  "integers" ) ; 
  996.       (void) FPrintFStdErr(  "integers" ) ; 
  997.     } 
  998.     {
  999.       bsterrprintandlookfo () ; 
  1000.       goto lab10 ; 
  1001.     } 
  1002.       } 
  1003.     } 
  1004.   } 
  1005.   {
  1006.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  1007.     {
  1008.       bstleftbraceprint () ; 
  1009.       {
  1010.     {
  1011.       (void) ReverseFPuts( logfile ,  "integers" ) ; 
  1012.       (void) FPrintFStdErr(  "integers" ) ; 
  1013.     } 
  1014.     {
  1015.       bsterrprintandlookfo () ; 
  1016.       goto lab10 ; 
  1017.     } 
  1018.       } 
  1019.     } 
  1020.     incr ( bufptr2 ) ; 
  1021.   } 
  1022.   {
  1023.     if ( ( ! eatbstwhitespace () ) ) 
  1024.     {
  1025.       eatbstprint () ; 
  1026.       {
  1027.     {
  1028.       (void) ReverseFPuts( logfile ,  "integers" ) ; 
  1029.       (void) FPrintFStdErr(  "integers" ) ; 
  1030.     } 
  1031.     {
  1032.       bsterrprintandlookfo () ; 
  1033.       goto lab10 ; 
  1034.     } 
  1035.       } 
  1036.     } 
  1037.   } 
  1038.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  1039.       
  1040.     {
  1041.       scanidentifier ( 125 , 37 , 37 ) ; 
  1042.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  1043.       ; 
  1044.       else {
  1045.       
  1046.     bstidprint () ; 
  1047.     {
  1048.       {
  1049.         (void) ReverseFPuts( logfile ,  "integers" ) ; 
  1050.         (void) FPrintFStdErr(  "integers" ) ; 
  1051.       } 
  1052.       {
  1053.         bsterrprintandlookfo () ; 
  1054.         goto lab10 ; 
  1055.       } 
  1056.     } 
  1057.       } 
  1058.     } 
  1059.     {
  1060.     ;
  1061. #ifdef TRACE
  1062.       {
  1063.     outtoken ( logfile ) ; 
  1064.       } 
  1065.       {
  1066.     (void) FPrintF( logfile , "%s\r",  " is an integer global-variable" ) ; 
  1067.       } 
  1068. #endif /* TRACE */
  1069.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  1070.       fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , true 
  1071.       ) ; 
  1072.       {
  1073.     if ( ( hashfound ) ) 
  1074.     {
  1075.       alreadyseenfunctionp ( fnloc ) ; 
  1076.       goto lab10 ; 
  1077.     } 
  1078.       } 
  1079.       fntype [ fnloc ] = 7 ; 
  1080.       ilkinfo [ fnloc ] = 0 ; 
  1081.     } 
  1082.     {
  1083.       if ( ( ! eatbstwhitespace () ) ) 
  1084.       {
  1085.     eatbstprint () ; 
  1086.     {
  1087.       {
  1088.         (void) ReverseFPuts( logfile ,  "integers" ) ; 
  1089.         (void) FPrintFStdErr(  "integers" ) ; 
  1090.       } 
  1091.       {
  1092.         bsterrprintandlookfo () ; 
  1093.         goto lab10 ; 
  1094.       } 
  1095.     } 
  1096.       } 
  1097.     } 
  1098.   } 
  1099.   incr ( bufptr2 ) ; 
  1100.   lab10: ; 
  1101. void bstiteratecommand (void) {
  1102.     /* 10 */ if ( ( ! readseen ) ) 
  1103.   {
  1104.     {
  1105.       (void) ReverseFPuts( logfile ,  "Illegal, iterate command before read command" ) ; 
  1106.       (void) FPrintFStdErr(  "Illegal, iterate command before read command" ) ; 
  1107.     } 
  1108.     {
  1109.       bsterrprintandlookfo () ; 
  1110.       goto lab10 ; 
  1111.     } 
  1112.   } 
  1113.   {
  1114.     if ( ( ! eatbstwhitespace () ) ) 
  1115.     {
  1116.       eatbstprint () ; 
  1117.       {
  1118.     {
  1119.       (void) ReverseFPuts( logfile ,  "iterate" ) ; 
  1120.       (void) FPrintFStdErr(  "iterate" ) ; 
  1121.     } 
  1122.     {
  1123.       bsterrprintandlookfo () ; 
  1124.       goto lab10 ; 
  1125.     } 
  1126.       } 
  1127.     } 
  1128.   } 
  1129.   {
  1130.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  1131.     {
  1132.       bstleftbraceprint () ; 
  1133.       {
  1134.     {
  1135.       (void) ReverseFPuts( logfile ,  "iterate" ) ; 
  1136.       (void) FPrintFStdErr(  "iterate" ) ; 
  1137.     } 
  1138.     {
  1139.       bsterrprintandlookfo () ; 
  1140.       goto lab10 ; 
  1141.     } 
  1142.       } 
  1143.     } 
  1144.     incr ( bufptr2 ) ; 
  1145.   } 
  1146.   {
  1147.     if ( ( ! eatbstwhitespace () ) ) 
  1148.     {
  1149.       eatbstprint () ; 
  1150.       {
  1151.     {
  1152.       (void) ReverseFPuts( logfile ,  "iterate" ) ; 
  1153.       (void) FPrintFStdErr(  "iterate" ) ; 
  1154.     } 
  1155.     {
  1156.       bsterrprintandlookfo () ; 
  1157.       goto lab10 ; 
  1158.     } 
  1159.       } 
  1160.     } 
  1161.   } 
  1162.   {
  1163.     scanidentifier ( 125 , 37 , 37 ) ; 
  1164.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  1165.     ; 
  1166.     else {
  1167.     
  1168.       bstidprint () ; 
  1169.       {
  1170.     {
  1171.       (void) ReverseFPuts( logfile ,  "iterate" ) ; 
  1172.       (void) FPrintFStdErr(  "iterate" ) ; 
  1173.     } 
  1174.     {
  1175.       bsterrprintandlookfo () ; 
  1176.       goto lab10 ; 
  1177.     } 
  1178.       } 
  1179.     } 
  1180.   } 
  1181.   {
  1182.     ;
  1183. #ifdef TRACE
  1184.     {
  1185.       outtoken ( logfile ) ; 
  1186.     } 
  1187.     {
  1188.       (void) FPrintF( logfile , "%s\r",  " is a to be iterated function" ) ; 
  1189.     } 
  1190. #endif /* TRACE */
  1191.     if ( ( badargumenttoken () ) ) 
  1192.     goto lab10 ; 
  1193.   } 
  1194.   {
  1195.     if ( ( ! eatbstwhitespace () ) ) 
  1196.     {
  1197.       eatbstprint () ; 
  1198.       {
  1199.     {
  1200.       (void) ReverseFPuts( logfile ,  "iterate" ) ; 
  1201.       (void) FPrintFStdErr(  "iterate" ) ; 
  1202.     } 
  1203.     {
  1204.       bsterrprintandlookfo () ; 
  1205.       goto lab10 ; 
  1206.     } 
  1207.       } 
  1208.     } 
  1209.   } 
  1210.   {
  1211.     if ( ( buffer [ bufptr2 ] != 125 ) ) 
  1212.     {
  1213.       bstrightbraceprint () ; 
  1214.       {
  1215.     {
  1216.       (void) ReverseFPuts( logfile ,  "iterate" ) ; 
  1217.       (void) FPrintFStdErr(  "iterate" ) ; 
  1218.     } 
  1219.     {
  1220.       bsterrprintandlookfo () ; 
  1221.       goto lab10 ; 
  1222.     } 
  1223.       } 
  1224.     } 
  1225.     incr ( bufptr2 ) ; 
  1226.   } 
  1227.   {
  1228.     initcommandexecution () ; 
  1229.     messwithentries = true ; 
  1230.     sortciteptr = 0 ; 
  1231.     while ( ( sortciteptr < numcites ) ) {
  1232.     
  1233.       citeptr = citeinfo [ sortciteptr ] ; 
  1234.     ;
  1235. #ifdef TRACE
  1236.       {
  1237.     outpoolstr ( logfile , hashtext [ fnloc ] ) ; 
  1238.       } 
  1239.       {
  1240.     (void) ReverseFPuts( logfile ,  " to be iterated on " ) ; 
  1241.       } 
  1242.       {
  1243.     outpoolstr ( logfile , citelist [ citeptr ] ) ; 
  1244.       } 
  1245.       {
  1246.     (void) FPutC('\r', logfile );
  1247.       } 
  1248. #endif /* TRACE */
  1249.       executefn ( fnloc ) ; 
  1250.       checkcommandexecutio () ; 
  1251.       incr ( sortciteptr ) ; 
  1252.     } 
  1253.   } 
  1254.   lab10: ; 
  1255. void bstmacrocommand (void) {
  1256.     /* 10 */ if ( ( readseen ) ) 
  1257.   {
  1258.     {
  1259.       (void) ReverseFPuts( logfile ,  "Illegal, macro command after read command" ) ; 
  1260.       (void) FPrintFStdErr(  "Illegal, macro command after read command" ) ; 
  1261.     } 
  1262.     {
  1263.       bsterrprintandlookfo () ; 
  1264.       goto lab10 ; 
  1265.     } 
  1266.   } 
  1267.   {
  1268.     if ( ( ! eatbstwhitespace () ) ) 
  1269.     {
  1270.       eatbstprint () ; 
  1271.       {
  1272.     {
  1273.       (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1274.       (void) FPrintFStdErr(  "macro" ) ; 
  1275.     } 
  1276.     {
  1277.       bsterrprintandlookfo () ; 
  1278.       goto lab10 ; 
  1279.     } 
  1280.       } 
  1281.     } 
  1282.   } 
  1283.   {
  1284.     {
  1285.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  1286.       {
  1287.     bstleftbraceprint () ; 
  1288.     {
  1289.       {
  1290.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1291.         (void) FPrintFStdErr(  "macro" ) ; 
  1292.       } 
  1293.       {
  1294.         bsterrprintandlookfo () ; 
  1295.         goto lab10 ; 
  1296.       } 
  1297.     } 
  1298.       } 
  1299.       incr ( bufptr2 ) ; 
  1300.     } 
  1301.     {
  1302.       if ( ( ! eatbstwhitespace () ) ) 
  1303.       {
  1304.     eatbstprint () ; 
  1305.     {
  1306.       {
  1307.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1308.         (void) FPrintFStdErr(  "macro" ) ; 
  1309.       } 
  1310.       {
  1311.         bsterrprintandlookfo () ; 
  1312.         goto lab10 ; 
  1313.       } 
  1314.     } 
  1315.       } 
  1316.     } 
  1317.     {
  1318.       scanidentifier ( 125 , 37 , 37 ) ; 
  1319.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  1320.       ; 
  1321.       else {
  1322.       
  1323.     bstidprint () ; 
  1324.     {
  1325.       {
  1326.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1327.         (void) FPrintFStdErr(  "macro" ) ; 
  1328.       } 
  1329.       {
  1330.         bsterrprintandlookfo () ; 
  1331.         goto lab10 ; 
  1332.       } 
  1333.     } 
  1334.       } 
  1335.     } 
  1336.     {
  1337.     ;
  1338. #ifdef TRACE
  1339.       {
  1340.     outtoken ( logfile ) ; 
  1341.       } 
  1342.       {
  1343.     (void) FPrintF( logfile , "%s\r",  " is a macro" ) ; 
  1344.       } 
  1345. #endif /* TRACE */
  1346.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  1347.       macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 13 
  1348.       , true ) ; 
  1349.       if ( ( hashfound ) ) 
  1350.       {
  1351.     printatoken () ; 
  1352.     {
  1353.       {
  1354.         (void) ReverseFPuts( logfile ,  " is already defined as a macro" ) ; 
  1355.         (void) FPrintFStdErr(  " is already defined as a macro" ) ; 
  1356.       } 
  1357.       {
  1358.         bsterrprintandlookfo () ; 
  1359.         goto lab10 ; 
  1360.       } 
  1361.     } 
  1362.       } 
  1363.       ilkinfo [ macronameloc ] = hashtext [ macronameloc ] ; 
  1364.     } 
  1365.     {
  1366.       if ( ( ! eatbstwhitespace () ) ) 
  1367.       {
  1368.     eatbstprint () ; 
  1369.     {
  1370.       {
  1371.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1372.         (void) FPrintFStdErr(  "macro" ) ; 
  1373.       } 
  1374.       {
  1375.         bsterrprintandlookfo () ; 
  1376.         goto lab10 ; 
  1377.       } 
  1378.     } 
  1379.       } 
  1380.     } 
  1381.     {
  1382.       if ( ( buffer [ bufptr2 ] != 125 ) ) 
  1383.       {
  1384.     bstrightbraceprint () ; 
  1385.     {
  1386.       {
  1387.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1388.         (void) FPrintFStdErr(  "macro" ) ; 
  1389.       } 
  1390.       {
  1391.         bsterrprintandlookfo () ; 
  1392.         goto lab10 ; 
  1393.       } 
  1394.     } 
  1395.       } 
  1396.       incr ( bufptr2 ) ; 
  1397.     } 
  1398.   } 
  1399.   {
  1400.     if ( ( ! eatbstwhitespace () ) ) 
  1401.     {
  1402.       eatbstprint () ; 
  1403.       {
  1404.     {
  1405.       (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1406.       (void) FPrintFStdErr(  "macro" ) ; 
  1407.     } 
  1408.     {
  1409.       bsterrprintandlookfo () ; 
  1410.       goto lab10 ; 
  1411.     } 
  1412.       } 
  1413.     } 
  1414.   } 
  1415.   {
  1416.     {
  1417.       if ( ( buffer [ bufptr2 ] != 123 ) ) 
  1418.       {
  1419.     bstleftbraceprint () ; 
  1420.     {
  1421.       {
  1422.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1423.         (void) FPrintFStdErr(  "macro" ) ; 
  1424.       } 
  1425.       {
  1426.         bsterrprintandlookfo () ; 
  1427.         goto lab10 ; 
  1428.       } 
  1429.     } 
  1430.       } 
  1431.       incr ( bufptr2 ) ; 
  1432.     } 
  1433.     {
  1434.       if ( ( ! eatbstwhitespace () ) ) 
  1435.       {
  1436.     eatbstprint () ; 
  1437.     {
  1438.       {
  1439.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1440.         (void) FPrintFStdErr(  "macro" ) ; 
  1441.       } 
  1442.       {
  1443.         bsterrprintandlookfo () ; 
  1444.         goto lab10 ; 
  1445.       } 
  1446.     } 
  1447.       } 
  1448.     } 
  1449.     if ( ( buffer [ bufptr2 ] != 34 ) ) 
  1450.     {
  1451.       {
  1452.     (void) FPrintF( logfile , "%s%c%s",  "A macro definition must be " , xchr [ 34 ] ,         "-delimited" ) ; 
  1453.     (void) FPrintFStdErr( "%s%c%s",  "A macro definition must be " , xchr [ 34 ] ,         "-delimited" ) ; 
  1454.       } 
  1455.       {
  1456.     bsterrprintandlookfo () ; 
  1457.     goto lab10 ; 
  1458.       } 
  1459.     } 
  1460.     {
  1461.       incr ( bufptr2 ) ; 
  1462.       if ( ( ! scan1 ( 34 ) ) ) 
  1463.       {
  1464.     {
  1465.       (void) FPrintF( logfile , "%s%c%s",  "There's no `" , xchr [ 34 ] ,           "' to end macro definition" ) ; 
  1466.       (void) FPrintFStdErr( "%s%c%s",  "There's no `" , xchr [ 34 ] ,           "' to end macro definition" ) ; 
  1467.     } 
  1468.     {
  1469.       bsterrprintandlookfo () ; 
  1470.       goto lab10 ; 
  1471.     } 
  1472.       } 
  1473.     ;
  1474. #ifdef TRACE
  1475.       {
  1476.     (void) FPutC( '"' , logfile );
  1477.       } 
  1478.       {
  1479.     outtoken ( logfile ) ; 
  1480.       } 
  1481.       {
  1482.     (void) FPutC( '"' , logfile );
  1483.       } 
  1484.       {
  1485.     (void) FPrintF( logfile , "%s\r",  " is a macro string" ) ; 
  1486.       } 
  1487. #endif /* TRACE */
  1488.       macrodefloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 0 , 
  1489.       true ) ; 
  1490.       fntype [ macrodefloc ] = 3 ; 
  1491.       ilkinfo [ macronameloc ] = hashtext [ macrodefloc ] ; 
  1492.       incr ( bufptr2 ) ; 
  1493.     } 
  1494.     {
  1495.       if ( ( ! eatbstwhitespace () ) ) 
  1496.       {
  1497.     eatbstprint () ; 
  1498.     {
  1499.       {
  1500.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1501.         (void) FPrintFStdErr(  "macro" ) ; 
  1502.       } 
  1503.       {
  1504.         bsterrprintandlookfo () ; 
  1505.         goto lab10 ; 
  1506.       } 
  1507.     } 
  1508.       } 
  1509.     } 
  1510.     {
  1511.       if ( ( buffer [ bufptr2 ] != 125 ) ) 
  1512.       {
  1513.     bstrightbraceprint () ; 
  1514.     {
  1515.       {
  1516.         (void) ReverseFPuts( logfile ,  "macro" ) ; 
  1517.         (void) FPrintFStdErr(  "macro" ) ; 
  1518.       } 
  1519.       {
  1520.         bsterrprintandlookfo () ; 
  1521.         goto lab10 ; 
  1522.       } 
  1523.     } 
  1524.       } 
  1525.       incr ( bufptr2 ) ; 
  1526.     } 
  1527.   } 
  1528.   lab10: ; 
  1529. void getbibcommandorentry (void) {
  1530.     /* 22 26 15 10 */ atbibcommand = false ; 
  1531.   while ( ( ! scan1 ( 64 ) ) ) {
  1532.       
  1533.     if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) 
  1534.     goto lab10 ; 
  1535.     incr ( biblinenum ) ; 
  1536.     bufptr2 = 0 ; 
  1537.   } 
  1538.   {
  1539.     if ( ( buffer [ bufptr2 ] != 64 ) ) 
  1540.     {
  1541.       {
  1542.     (void) FPrintF( logfile , "%s%c%s",  "An \"" , xchr [ 64 ] , "\" disappeared" ) ; 
  1543.     (void) FPrintFStdErr( "%s%c%s",  "An \"" , xchr [ 64 ] , "\" disappeared" ) ; 
  1544.       } 
  1545.       printconfusion () ; 
  1546.       longjmp(jmp9998,1) ; 
  1547.     } 
  1548.     incr ( bufptr2 ) ; 
  1549.     {
  1550.       if ( ( ! eatbibwhitespace () ) ) 
  1551.       {
  1552.     eatbibprint () ; 
  1553.     goto lab10 ; 
  1554.       } 
  1555.     } 
  1556.     scanidentifier ( 123 , 40 , 40 ) ; 
  1557.     {
  1558.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  1559.       ; 
  1560.       else {
  1561.       
  1562.     bibidprint () ; 
  1563.     {
  1564.       {
  1565.         (void) ReverseFPuts( logfile ,  "an entry type" ) ; 
  1566.         (void) FPrintFStdErr(  "an entry type" ) ; 
  1567.       } 
  1568.       biberrprint () ; 
  1569.       goto lab10 ; 
  1570.     } 
  1571.       } 
  1572.     } 
  1573.     ;
  1574. #ifdef TRACE
  1575.     {
  1576.       outtoken ( logfile ) ; 
  1577.     } 
  1578.     {
  1579.       (void) FPrintF( logfile , "%s\r",  " is an entry type or a database-file command" ) ; 
  1580.     } 
  1581. #endif /* TRACE */
  1582.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  1583.     commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
  1584.     ) , 12 , false ) ] ; 
  1585.     if ( ( hashfound ) ) 
  1586.     {
  1587.       atbibcommand = true ; 
  1588.       switch ( ( commandnum ) ) 
  1589.       {case 0 : 
  1590.     {
  1591.       goto lab10 ; 
  1592.     } 
  1593.     break ; 
  1594.       case 1 : 
  1595.     {
  1596.       if ( ( preambleptr == maxbibfiles ) ) 
  1597.       {
  1598.         {
  1599.           (void) FPrintF( logfile , "%s%ld%s",  "You've exceeded " , (long)maxbibfiles ,               " preamble commands" ) ; 
  1600.           (void) FPrintFStdErr( "%s%ld%s",  "You've exceeded " , (long)maxbibfiles ,               " preamble commands" ) ; 
  1601.         } 
  1602.         biberrprint () ; 
  1603.         goto lab10 ; 
  1604.       } 
  1605.       {
  1606.         if ( ( ! eatbibwhitespace () ) ) 
  1607.         {
  1608.           eatbibprint () ; 
  1609.           goto lab10 ; 
  1610.         } 
  1611.       } 
  1612.       if ( ( buffer [ bufptr2 ] == 123 ) ) 
  1613.       rightouterdelim = 125 ; 
  1614.       else if ( ( buffer [ bufptr2 ] == 40 ) ) 
  1615.       rightouterdelim = 41 ; 
  1616.       else {
  1617.           
  1618.         biboneoftwoprint ( 123 , 40 ) ; 
  1619.         goto lab10 ; 
  1620.       } 
  1621.       incr ( bufptr2 ) ; 
  1622.       {
  1623.         if ( ( ! eatbibwhitespace () ) ) 
  1624.         {
  1625.           eatbibprint () ; 
  1626.           goto lab10 ; 
  1627.         } 
  1628.       } 
  1629.       storefield = true ; 
  1630.       if ( ( ! scanandstorethefield () ) ) 
  1631.       goto lab10 ; 
  1632.       if ( ( buffer [ bufptr2 ] != rightouterdelim ) ) 
  1633.       {
  1634.         {
  1635.           (void) FPrintF( logfile , "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,               "\" in preamble command" ) ; 
  1636.           (void) FPrintFStdErr( "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,               "\" in preamble command" ) ; 
  1637.         } 
  1638.         biberrprint () ; 
  1639.         goto lab10 ; 
  1640.       } 
  1641.       incr ( bufptr2 ) ; 
  1642.       goto lab10 ; 
  1643.     } 
  1644.     break ; 
  1645.       case 2 : 
  1646.     {
  1647.       {
  1648.         if ( ( ! eatbibwhitespace () ) ) 
  1649.         {
  1650.           eatbibprint () ; 
  1651.           goto lab10 ; 
  1652.         } 
  1653.       } 
  1654.       {
  1655.         if ( ( buffer [ bufptr2 ] == 123 ) ) 
  1656.         rightouterdelim = 125 ; 
  1657.         else if ( ( buffer [ bufptr2 ] == 40 ) ) 
  1658.         rightouterdelim = 41 ; 
  1659.         else {
  1660.         
  1661.           biboneoftwoprint ( 123 , 40 ) ; 
  1662.           goto lab10 ; 
  1663.         } 
  1664.         incr ( bufptr2 ) ; 
  1665.         {
  1666.           if ( ( ! eatbibwhitespace () ) ) 
  1667.           {
  1668.         eatbibprint () ; 
  1669.         goto lab10 ; 
  1670.           } 
  1671.         } 
  1672.         scanidentifier ( 61 , 61 , 61 ) ; 
  1673.         {
  1674.           if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  1675.           ; 
  1676.           else {
  1677.           
  1678.         bibidprint () ; 
  1679.         {
  1680.           {
  1681.             (void) ReverseFPuts( logfile ,  "a string name" ) ; 
  1682.             (void) FPrintFStdErr(  "a string name" ) ; 
  1683.           } 
  1684.           biberrprint () ; 
  1685.           goto lab10 ; 
  1686.         } 
  1687.           } 
  1688.         } 
  1689.         {
  1690.     ;
  1691. #ifdef TRACE
  1692.           {
  1693.         outtoken ( logfile ) ; 
  1694.           } 
  1695.           {
  1696.         (void) FPrintF( logfile , "%s\r",  " is a database-defined macro" ) ; 
  1697.           } 
  1698. #endif /* TRACE */
  1699.           lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  1700.           curmacroloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
  1701.           ) , 13 , true ) ; 
  1702.           ilkinfo [ curmacroloc ] = hashtext [ curmacroloc ] ; 
  1703.         } 
  1704.       } 
  1705.       {
  1706.         if ( ( ! eatbibwhitespace () ) ) 
  1707.         {
  1708.           eatbibprint () ; 
  1709.           goto lab10 ; 
  1710.         } 
  1711.       } 
  1712.       {
  1713.         if ( ( buffer [ bufptr2 ] != 61 ) ) 
  1714.         {
  1715.           bibequalssignprint () ; 
  1716.           goto lab10 ; 
  1717.         } 
  1718.         incr ( bufptr2 ) ; 
  1719.         {
  1720.           if ( ( ! eatbibwhitespace () ) ) 
  1721.           {
  1722.         eatbibprint () ; 
  1723.         goto lab10 ; 
  1724.           } 
  1725.         } 
  1726.         storefield = true ; 
  1727.         if ( ( ! scanandstorethefield () ) ) 
  1728.         goto lab10 ; 
  1729.         if ( ( buffer [ bufptr2 ] != rightouterdelim ) ) 
  1730.         {
  1731.           {
  1732.         (void) FPrintF( logfile , "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,                 "\" in string command" ) ; 
  1733.         (void) FPrintFStdErr( "%s%c%s",  "Missing \"" , xchr [ rightouterdelim ] ,                 "\" in string command" ) ; 
  1734.           } 
  1735.           biberrprint () ; 
  1736.           goto lab10 ; 
  1737.         } 
  1738.         incr ( bufptr2 ) ; 
  1739.       } 
  1740.       goto lab10 ; 
  1741.     } 
  1742.     break ; 
  1743.     default: 
  1744.     bibcmdconfusion () ; 
  1745.     break ; 
  1746.       } 
  1747.     } 
  1748.     else {
  1749.     
  1750.       entrytypeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 
  1751.       , false ) ; 
  1752.       if ( ( ( ! hashfound ) || ( fntype [ entrytypeloc ] != 1 ) ) ) 
  1753.       typeexists = false ; 
  1754.       else typeexists = true ; 
  1755.     } 
  1756.   } 
  1757.   {
  1758.     if ( ( ! eatbibwhitespace () ) ) 
  1759.     {
  1760.       eatbibprint () ; 
  1761.       goto lab10 ; 
  1762.     } 
  1763.   } 
  1764.   {
  1765.     if ( ( buffer [ bufptr2 ] == 123 ) ) 
  1766.     rightouterdelim = 125 ; 
  1767.     else if ( ( buffer [ bufptr2 ] == 40 ) ) 
  1768.     rightouterdelim = 41 ; 
  1769.     else {
  1770.     
  1771.       biboneoftwoprint ( 123 , 40 ) ; 
  1772.       goto lab10 ; 
  1773.     } 
  1774.     incr ( bufptr2 ) ; 
  1775.     {
  1776.       if ( ( ! eatbibwhitespace () ) ) 
  1777.       {
  1778.     eatbibprint () ; 
  1779.     goto lab10 ; 
  1780.       } 
  1781.     } 
  1782.     if ( ( rightouterdelim == 41 ) ) 
  1783.     {
  1784.       if ( ( scan1white ( 44 ) ) ) 
  1785.       ; 
  1786.     } 
  1787.     else if ( ( scan2white ( 44 , 125 ) ) ) 
  1788.     ; 
  1789.     {
  1790.     ;
  1791. #ifdef TRACE
  1792.       {
  1793.     outtoken ( logfile ) ; 
  1794.       } 
  1795.       {
  1796.     (void) FPrintF( logfile , "%s\r",  " is a database key" ) ; 
  1797.       } 
  1798. #endif /* TRACE */
  1799.       tmpptr = bufptr1 ; 
  1800.       while ( ( tmpptr < bufptr2 ) ) {
  1801.       
  1802.     exbuf [ tmpptr ] = buffer [ tmpptr ] ; 
  1803.     incr ( tmpptr ) ; 
  1804.       } 
  1805.       lowercase ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  1806.       if ( ( allentries ) ) 
  1807.       lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 10 , 
  1808.       true ) ; 
  1809.       else lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 
  1810.       10 , false ) ; 
  1811.       if ( ( hashfound ) ) 
  1812.       {
  1813.     entryciteptr = ilkinfo [ ilkinfo [ lcciteloc ] ] ; 
  1814.     {
  1815.       if ( ( ( ! allentries ) || ( entryciteptr < allmarker ) || ( 
  1816.       entryciteptr >= oldnumcites ) ) ) 
  1817.       {
  1818.         if ( ( typelist [ entryciteptr ] == 0 ) ) 
  1819.         {
  1820.           {
  1821.         if ( ( ( ! allentries ) && ( entryciteptr >= oldnumcites ) ) ) 
  1822.         {
  1823.           citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 
  1824.           ) , 9 , true ) ; 
  1825.           if ( ( ! hashfound ) ) 
  1826.           {
  1827.             ilkinfo [ lcciteloc ] = citeloc ; 
  1828.             ilkinfo [ citeloc ] = entryciteptr ; 
  1829.             citelist [ entryciteptr ] = hashtext [ citeloc ] ; 
  1830.             hashfound = true ; 
  1831.           } 
  1832.         } 
  1833.           } 
  1834.           goto lab26 ; 
  1835.         } 
  1836.       } 
  1837.       else if ( ( ! entryexists [ entryciteptr ] ) ) 
  1838.       {
  1839.         {
  1840.           exbufptr = 0 ; 
  1841.           tmpptr = strstart [ citeinfo [ entryciteptr ] ] ; 
  1842.           tmpendptr = strstart [ citeinfo [ entryciteptr ] + 1 ] ; 
  1843.           while ( ( tmpptr < tmpendptr ) ) {
  1844.           
  1845.         exbuf [ exbufptr ] = strpool [ tmpptr ] ; 
  1846.         incr ( exbufptr ) ; 
  1847.         incr ( tmpptr ) ; 
  1848.           } 
  1849.           lowercase ( exbuf , 0 , ( strstart [ citeinfo [ entryciteptr ] + 
  1850.           1 ] - strstart [ citeinfo [ entryciteptr ] ] ) ) ; 
  1851.           lcxciteloc = strlookup ( exbuf , 0 , ( strstart [ citeinfo [ 
  1852.           entryciteptr ] + 1 ] - strstart [ citeinfo [ entryciteptr ] ] ) 
  1853.           , 10 , false ) ; 
  1854.           if ( ( ! hashfound ) ) 
  1855.           citekeydisappearedco () ; 
  1856.         } 
  1857.         if ( ( lcxciteloc == lcciteloc ) ) 
  1858.         goto lab26 ; 
  1859.       } 
  1860.       if ( ( typelist [ entryciteptr ] == 0 ) ) 
  1861.       {
  1862.         {
  1863.           (void) ReverseFPuts( logfile ,  "The cite list is messed up" ) ; 
  1864.           (void) FPrintFStdErr(  "The cite list is messed up" ) ; 
  1865.         } 
  1866.         printconfusion () ; 
  1867.         longjmp(jmp9998,1) ; 
  1868.       } 
  1869.       {
  1870.         {
  1871.           (void) ReverseFPuts( logfile ,  "Repeated entry" ) ; 
  1872.           (void) FPrintFStdErr(  "Repeated entry" ) ; 
  1873.         } 
  1874.         biberrprint () ; 
  1875.         goto lab10 ; 
  1876.       } 
  1877.       lab26: ; 
  1878.     } 
  1879.       } 
  1880.       storeentry = true ; 
  1881.       if ( ( allentries ) ) 
  1882.       {
  1883.     if ( ( hashfound ) ) 
  1884.     {
  1885.       if ( ( entryciteptr < allmarker ) ) 
  1886.       goto lab22 ; 
  1887.       else {
  1888.           
  1889.         entryexists [ entryciteptr ] = true ; 
  1890.         citeloc = ilkinfo [ lcciteloc ] ; 
  1891.       } 
  1892.     } 
  1893.     else {
  1894.         
  1895.       citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9 , 
  1896.       true ) ; 
  1897.       if ( ( hashfound ) ) 
  1898.       hashciteconfusion () ; 
  1899.     } 
  1900.     entryciteptr = citeptr ; 
  1901.     adddatabasecite ( citeptr ) ; 
  1902.     lab22: ; 
  1903.       } 
  1904.       else if ( ( ! hashfound ) ) 
  1905.       storeentry = false ; 
  1906.       if ( ( storeentry ) ) 
  1907.       {
  1908.     if ( ( typeexists ) ) 
  1909.     typelist [ entryciteptr ] = entrytypeloc ; 
  1910.     else {
  1911.         
  1912.       typelist [ entryciteptr ] = 5001 ; 
  1913.       {
  1914.         (void) ReverseFPuts( logfile ,  "Warning--entry type for \"" ) ; 
  1915.         (void) FPrintFStdErr(  "Warning--entry type for \"" ) ; 
  1916.       } 
  1917.       printatoken () ; 
  1918.       {
  1919.         {
  1920.           (void) FPrintF( logfile , "%s\r",  "\" isn't style-file defined" ) ; 
  1921.           (void) FPrintFStdErr( "%s\r",  "\" isn't style-file defined" ) ; 
  1922.         } 
  1923.         bibwarnprint () ; 
  1924.       } 
  1925.     } 
  1926.       } 
  1927.     } 
  1928.   } 
  1929.   {
  1930.     if ( ( ! eatbibwhitespace () ) ) 
  1931.     {
  1932.       eatbibprint () ; 
  1933.       goto lab10 ; 
  1934.     } 
  1935.   } 
  1936.   {
  1937.     while ( ( buffer [ bufptr2 ] != rightouterdelim ) ) {
  1938.     
  1939.       if ( ( buffer [ bufptr2 ] != 44 ) ) 
  1940.       {
  1941.     biboneoftwoprint ( 44 , rightouterdelim ) ; 
  1942.     goto lab10 ; 
  1943.       } 
  1944.       incr ( bufptr2 ) ; 
  1945.       {
  1946.     if ( ( ! eatbibwhitespace () ) ) 
  1947.     {
  1948.       eatbibprint () ; 
  1949.       goto lab10 ; 
  1950.     } 
  1951.       } 
  1952.       if ( ( buffer [ bufptr2 ] == rightouterdelim ) ) 
  1953.       goto lab15 ; 
  1954.       {
  1955.     scanidentifier ( 61 , 61 , 61 ) ; 
  1956.     {
  1957.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  1958.       ; 
  1959.       else {
  1960.           
  1961.         bibidprint () ; 
  1962.         {
  1963.           {
  1964.         (void) ReverseFPuts( logfile ,  "a field name" ) ; 
  1965.         (void) FPrintFStdErr(  "a field name" ) ; 
  1966.           } 
  1967.           biberrprint () ; 
  1968.           goto lab10 ; 
  1969.         } 
  1970.       } 
  1971.     } 
  1972.     ;
  1973. #ifdef TRACE
  1974.     {
  1975.       outtoken ( logfile ) ; 
  1976.     } 
  1977.     {
  1978.       (void) FPrintF( logfile , "%s\r",  " is a field name" ) ; 
  1979.     } 
  1980. #endif /* TRACE */
  1981.     storefield = false ; 
  1982.     if ( ( storeentry ) ) 
  1983.     {
  1984.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  1985.       fieldnameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
  1986.       , 11 , false ) ; 
  1987.       if ( ( hashfound ) ) 
  1988.       if ( ( fntype [ fieldnameloc ] == 4 ) ) 
  1989.       storefield = true ; 
  1990.     } 
  1991.     {
  1992.       if ( ( ! eatbibwhitespace () ) ) 
  1993.       {
  1994.         eatbibprint () ; 
  1995.         goto lab10 ; 
  1996.       } 
  1997.     } 
  1998.     if ( ( buffer [ bufptr2 ] != 61 ) ) 
  1999.     {
  2000.       bibequalssignprint () ; 
  2001.       goto lab10 ; 
  2002.     } 
  2003.     incr ( bufptr2 ) ; 
  2004.       } 
  2005.       {
  2006.     if ( ( ! eatbibwhitespace () ) ) 
  2007.     {
  2008.       eatbibprint () ; 
  2009.       goto lab10 ; 
  2010.     } 
  2011.       } 
  2012.       if ( ( ! scanandstorethefield () ) ) 
  2013.       goto lab10 ; 
  2014.     } 
  2015.     lab15: incr ( bufptr2 ) ; 
  2016.   } 
  2017.   lab10: ; 
  2018. void bstreadcommand (void) {
  2019.     /* 10 */ if ( ( readseen ) ) 
  2020.   {
  2021.     {
  2022.       (void) ReverseFPuts( logfile ,  "Illegal, another read command" ) ; 
  2023.       (void) FPrintFStdErr(  "Illegal, another read command" ) ; 
  2024.     } 
  2025.     {
  2026.       bsterrprintandlookfo () ; 
  2027.       goto lab10 ; 
  2028.     } 
  2029.   } 
  2030.   readseen = true ; 
  2031.   if ( ( ! entryseen ) ) 
  2032.   {
  2033.     {
  2034.       (void) ReverseFPuts( logfile ,  "Illegal, read command before entry command" ) ; 
  2035.       (void) FPrintFStdErr(  "Illegal, read command before entry command" ) ; 
  2036.     } 
  2037.     {
  2038.       bsterrprintandlookfo () ; 
  2039.       goto lab10 ; 
  2040.     } 
  2041.   } 
  2042.   svptr1 = bufptr2 ; 
  2043.   svptr2 = last ; 
  2044.   tmpptr = svptr1 ; 
  2045.   while ( ( tmpptr < svptr2 ) ) {
  2046.       
  2047.     svbuffer [ tmpptr ] = buffer [ tmpptr ] ; 
  2048.     incr ( tmpptr ) ; 
  2049.   } 
  2050.   {
  2051.     {
  2052.       {
  2053.     checkfieldoverflow ( numfields * numcites ) ; 
  2054.     fieldptr = 0 ; 
  2055.     while ( ( fieldptr < maxfields ) ) {
  2056.         
  2057.       fieldinfo [ fieldptr ] = 0 ; 
  2058.       incr ( fieldptr ) ; 
  2059.     } 
  2060.       } 
  2061.       {
  2062.     citeptr = 0 ; 
  2063.     while ( ( citeptr < maxcites ) ) {
  2064.         
  2065.       typelist [ citeptr ] = 0 ; 
  2066.       citeinfo [ citeptr ] = 0 ; 
  2067.       incr ( citeptr ) ; 
  2068.     } 
  2069.     oldnumcites = numcites ; 
  2070.     if ( ( allentries ) ) 
  2071.     {
  2072.       citeptr = allmarker ; 
  2073.       while ( ( citeptr < oldnumcites ) ) {
  2074.           
  2075.         citeinfo [ citeptr ] = citelist [ citeptr ] ; 
  2076.         entryexists [ citeptr ] = false ; 
  2077.         incr ( citeptr ) ; 
  2078.       } 
  2079.       citeptr = allmarker ; 
  2080.     } 
  2081.     else {
  2082.         
  2083.       citeptr = numcites ; 
  2084.       allmarker = 0 ; 
  2085.     } 
  2086.       } 
  2087.     } 
  2088.     readperformed = true ; 
  2089.     bibptr = 0 ; 
  2090.     while ( ( bibptr < numbibfiles ) ) {
  2091.     
  2092.       {
  2093.     (void) FPrintF( logfile , "%s%ld%s",  "Database file #" , (long)bibptr + 1 , ": " ) ; 
  2094.     (void) FPrintFStdErr( "%s%ld%s",  "Database file #" , (long)bibptr + 1 , ": " ) ; 
  2095.       } 
  2096.       printbibname () ; 
  2097.       biblinenum = 0 ; 
  2098.       bufptr2 = last ; 
  2099.       while ( ( ! eof ( bibfile [ bibptr ] ) ) ) getbibcommandorentry () ; 
  2100.       aclose ( bibfile [ bibptr ] ) ; 
  2101.       incr ( bibptr ) ; 
  2102.     } 
  2103.     readingcompleted = true ; 
  2104.     ;
  2105. #ifdef TRACE
  2106.     {
  2107.       (void) FPrintF( logfile , "%s\r",  "Finished reading the database file(s)" ) ; 
  2108.     } 
  2109. #endif /* TRACE */
  2110.     {
  2111.       numcites = citeptr ; 
  2112.       numpreamblestrings = preambleptr ; 
  2113.       {
  2114.     citeptr = 0 ; 
  2115.     while ( ( citeptr < numcites ) ) {
  2116.         
  2117.       fieldptr = citeptr * numfields + crossrefnum ; 
  2118.       if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  2119.       if ( ( findcitelocsforthisc ( fieldinfo [ fieldptr ] ) ) ) 
  2120.       {
  2121.         citeloc = ilkinfo [ lcciteloc ] ; 
  2122.         fieldinfo [ fieldptr ] = hashtext [ citeloc ] ; 
  2123.         citeparentptr = ilkinfo [ citeloc ] ; 
  2124.         fieldptr = citeptr * numfields + numpredefinedfields ; 
  2125.         fieldendptr = fieldptr - numpredefinedfields + numfields ; 
  2126.         fieldparentptr = citeparentptr * numfields + numpredefinedfields ; 
  2127.         while ( ( fieldptr < fieldendptr ) ) {
  2128.         
  2129.           if ( ( fieldinfo [ fieldptr ] == 0 ) ) 
  2130.           fieldinfo [ fieldptr ] = fieldinfo [ fieldparentptr ] ; 
  2131.           incr ( fieldptr ) ; 
  2132.           incr ( fieldparentptr ) ; 
  2133.         } 
  2134.       } 
  2135.       incr ( citeptr ) ; 
  2136.     } 
  2137.       } 
  2138.       {
  2139.     citeptr = 0 ; 
  2140.     while ( ( citeptr < numcites ) ) {
  2141.         
  2142.       fieldptr = citeptr * numfields + crossrefnum ; 
  2143.       if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  2144.       if ( ( ! findcitelocsforthisc ( fieldinfo [ fieldptr ] ) ) ) 
  2145.       {
  2146.         if ( ( citehashfound ) ) 
  2147.         hashciteconfusion () ; 
  2148.         nonexistentcrossrefe () ; 
  2149.         fieldinfo [ fieldptr ] = 0 ; 
  2150.       } 
  2151.       else {
  2152.           
  2153.         if ( ( citeloc != ilkinfo [ lcciteloc ] ) ) 
  2154.         hashciteconfusion () ; 
  2155.         citeparentptr = ilkinfo [ citeloc ] ; 
  2156.         if ( ( typelist [ citeparentptr ] == 0 ) ) 
  2157.         {
  2158.           nonexistentcrossrefe () ; 
  2159.           fieldinfo [ fieldptr ] = 0 ; 
  2160.         } 
  2161.         else {
  2162.         
  2163.           fieldparentptr = citeparentptr * numfields + crossrefnum ; 
  2164.           if ( ( fieldinfo [ fieldparentptr ] != 0 ) ) 
  2165.           {
  2166.         {
  2167.           (void) ReverseFPuts( logfile ,  "Warning--you've nested cross references"                   ) ; 
  2168.           (void) FPrintFStdErr(  "Warning--you've nested cross references" ) 
  2169.           ; 
  2170.         } 
  2171.         badcrossreferencepri ( citelist [ citeparentptr ] ) ; 
  2172.         {
  2173.           (void) FPrintF( logfile , "%s%ld\r",  "\", (long)which also refers to something" ) ; 
  2174.           (void) FPrintFStdErr( "%s%ld\r",  "\", (long)which also refers to something" ) ; 
  2175.         } 
  2176.         markwarning () ; 
  2177.           } 
  2178.           if ( ( ( ! allentries ) && ( citeparentptr >= oldnumcites ) && ( 
  2179.           citeinfo [ citeparentptr ] < mincrossrefs ) ) ) 
  2180.           fieldinfo [ fieldptr ] = 0 ; 
  2181.         } 
  2182.       } 
  2183.       incr ( citeptr ) ; 
  2184.     } 
  2185.       } 
  2186.       {
  2187.     citeptr = 0 ; 
  2188.     while ( ( citeptr < numcites ) ) {
  2189.         
  2190.       if ( ( typelist [ citeptr ] == 0 ) ) 
  2191.       printmissingentry ( citelist [ citeptr ] ) ; 
  2192.       else if ( ( ( allentries ) || ( citeptr < oldnumcites ) || ( 
  2193.       citeinfo [ citeptr ] >= mincrossrefs ) ) ) 
  2194.       {
  2195.         if ( ( citeptr > citexptr ) ) 
  2196.         {
  2197.           citelist [ citexptr ] = citelist [ citeptr ] ; 
  2198.           typelist [ citexptr ] = typelist [ citeptr ] ; 
  2199.           if ( ( ! findcitelocsforthisc ( citelist [ citeptr ] ) ) ) 
  2200.           citekeydisappearedco () ; 
  2201.           if ( ( ( ! citehashfound ) || ( citeloc != ilkinfo [ lcciteloc ] 
  2202.           ) ) ) 
  2203.           hashciteconfusion () ; 
  2204.           ilkinfo [ citeloc ] = citexptr ; 
  2205.           fieldptr = citexptr * numfields ; 
  2206.           fieldendptr = fieldptr + numfields ; 
  2207.           tmpptr = citeptr * numfields ; 
  2208.           while ( ( fieldptr < fieldendptr ) ) {
  2209.           
  2210.         fieldinfo [ fieldptr ] = fieldinfo [ tmpptr ] ; 
  2211.         incr ( fieldptr ) ; 
  2212.         incr ( tmpptr ) ; 
  2213.           } 
  2214.         } 
  2215.         incr ( citexptr ) ; 
  2216.       } 
  2217.       incr ( citeptr ) ; 
  2218.     } 
  2219.     numcites = citexptr ; 
  2220.     if ( ( allentries ) ) 
  2221.     {
  2222.       citeptr = allmarker ; 
  2223.       while ( ( citeptr < oldnumcites ) ) {
  2224.           
  2225.         if ( ( ! entryexists [ citeptr ] ) ) 
  2226.         printmissingentry ( citeinfo [ citeptr ] ) ; 
  2227.         incr ( citeptr ) ; 
  2228.       } 
  2229.     } 
  2230.       } 
  2231.       {
  2232.     if ( ( numentints * numcites > maxentints ) ) 
  2233.     {
  2234.       {
  2235.         (void) FPrintF( logfile , "%ld%s",  (long)numentints * numcites , ": " ) ; 
  2236.         (void) FPrintFStdErr( "%ld%s",  (long)numentints * numcites , ": " ) ; 
  2237.       } 
  2238.       {
  2239.         printoverflow () ; 
  2240.         {
  2241.           (void) FPrintF( logfile , "%s%ld\r",  "total number of integer entry-variables " ,               (long)maxentints ) ; 
  2242.           (void) FPrintFStdErr( "%s%ld\r",  "total number of integer entry-variables " ,               (long)maxentints ) ; 
  2243.         } 
  2244.         longjmp(jmp9998,1) ; 
  2245.       } 
  2246.     } 
  2247.     intentptr = 0 ; 
  2248.     while ( ( intentptr < numentints * numcites ) ) {
  2249.         
  2250.       entryints [ intentptr ] = 0 ; 
  2251.       incr ( intentptr ) ; 
  2252.     } 
  2253.       } 
  2254.       {
  2255.     if ( ( numentstrs * numcites > maxentstrs ) ) 
  2256.     {
  2257.       {
  2258.         (void) FPrintF( logfile , "%ld%s",  (long)numentstrs * numcites , ": " ) ; 
  2259.         (void) FPrintFStdErr( "%ld%s",  (long)numentstrs * numcites , ": " ) ; 
  2260.       } 
  2261.       {
  2262.         printoverflow () ; 
  2263.         {
  2264.           (void) FPrintF( logfile , "%s%ld\r",  "total number of string entry-variables " ,               (long)maxentstrs ) ; 
  2265.           (void) FPrintFStdErr( "%s%ld\r",  "total number of string entry-variables " ,               (long)maxentstrs ) ; 
  2266.         } 
  2267.         longjmp(jmp9998,1) ; 
  2268.       } 
  2269.     } 
  2270.     strentptr = 0 ; 
  2271.     while ( ( strentptr < numentstrs * numcites ) ) {
  2272.         
  2273.       entrystrs [ strentptr ] [ 0 ] = 127 ; 
  2274.       incr ( strentptr ) ; 
  2275.     } 
  2276.       } 
  2277.       {
  2278.     citeptr = 0 ; 
  2279.     while ( ( citeptr < numcites ) ) {
  2280.         
  2281.       citeinfo [ citeptr ] = citeptr ; 
  2282.       incr ( citeptr ) ; 
  2283.     } 
  2284.       } 
  2285.     } 
  2286.     readcompleted = true ; 
  2287.   } 
  2288.   bufptr2 = svptr1 ; 
  2289.   last = svptr2 ; 
  2290.   tmpptr = bufptr2 ; 
  2291.   while ( ( tmpptr < last ) ) {
  2292.       
  2293.     buffer [ tmpptr ] = svbuffer [ tmpptr ] ; 
  2294.     incr ( tmpptr ) ; 
  2295.   } 
  2296.   lab10: ; 
  2297. void bstreversecommand (void) {
  2298.     /* 10 */ if ( ( ! readseen ) ) 
  2299.   {
  2300.     {
  2301.       (void) ReverseFPuts( logfile ,  "Illegal, reverse command before read command" ) ; 
  2302.       (void) FPrintFStdErr(  "Illegal, reverse command before read command" ) ; 
  2303.     } 
  2304.     {
  2305.       bsterrprintandlookfo () ; 
  2306.       goto lab10 ; 
  2307.     } 
  2308.   } 
  2309.   {
  2310.     if ( ( ! eatbstwhitespace () ) ) 
  2311.     {
  2312.       eatbstprint () ; 
  2313.       {
  2314.     {
  2315.       (void) ReverseFPuts( logfile ,  "reverse" ) ; 
  2316.       (void) FPrintFStdErr(  "reverse" ) ; 
  2317.     } 
  2318.     {
  2319.       bsterrprintandlookfo () ; 
  2320.       goto lab10 ; 
  2321.     } 
  2322.       } 
  2323.     } 
  2324.   } 
  2325.   {
  2326.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  2327.     {
  2328.       bstleftbraceprint () ; 
  2329.       {
  2330.     {
  2331.       (void) ReverseFPuts( logfile ,  "reverse" ) ; 
  2332.       (void) FPrintFStdErr(  "reverse" ) ; 
  2333.     } 
  2334.     {
  2335.       bsterrprintandlookfo () ; 
  2336.       goto lab10 ; 
  2337.     } 
  2338.       } 
  2339.     } 
  2340.     incr ( bufptr2 ) ; 
  2341.   } 
  2342.   {
  2343.     if ( ( ! eatbstwhitespace () ) ) 
  2344.     {
  2345.       eatbstprint () ; 
  2346.       {
  2347.     {
  2348.       (void) ReverseFPuts( logfile ,  "reverse" ) ; 
  2349.       (void) FPrintFStdErr(  "reverse" ) ; 
  2350.     } 
  2351.     {
  2352.       bsterrprintandlookfo () ; 
  2353.       goto lab10 ; 
  2354.     } 
  2355.       } 
  2356.     } 
  2357.   } 
  2358.   {
  2359.     scanidentifier ( 125 , 37 , 37 ) ; 
  2360.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  2361.     ; 
  2362.     else {
  2363.     
  2364.       bstidprint () ; 
  2365.       {
  2366.     {
  2367.       (void) ReverseFPuts( logfile ,  "reverse" ) ; 
  2368.       (void) FPrintFStdErr(  "reverse" ) ; 
  2369.     } 
  2370.     {
  2371.       bsterrprintandlookfo () ; 
  2372.       goto lab10 ; 
  2373.     } 
  2374.       } 
  2375.     } 
  2376.   } 
  2377.   {
  2378.     ;
  2379. #ifdef TRACE
  2380.     {
  2381.       outtoken ( logfile ) ; 
  2382.     } 
  2383.     {
  2384.       (void) FPrintF( logfile , "%s\r",  " is a to be iterated in reverse function" ) ; 
  2385.     } 
  2386. #endif /* TRACE */
  2387.     if ( ( badargumenttoken () ) ) 
  2388.     goto lab10 ; 
  2389.   } 
  2390.   {
  2391.     if ( ( ! eatbstwhitespace () ) ) 
  2392.     {
  2393.       eatbstprint () ; 
  2394.       {
  2395.     {
  2396.       (void) ReverseFPuts( logfile ,  "reverse" ) ; 
  2397.       (void) FPrintFStdErr(  "reverse" ) ; 
  2398.     } 
  2399.     {
  2400.       bsterrprintandlookfo () ; 
  2401.       goto lab10 ; 
  2402.     } 
  2403.       } 
  2404.     } 
  2405.   } 
  2406.   {
  2407.     if ( ( buffer [ bufptr2 ] != 125 ) ) 
  2408.     {
  2409.       bstrightbraceprint () ; 
  2410.       {
  2411.     {
  2412.       (void) ReverseFPuts( logfile ,  "reverse" ) ; 
  2413.       (void) FPrintFStdErr(  "reverse" ) ; 
  2414.     } 
  2415.     {
  2416.       bsterrprintandlookfo () ; 
  2417.       goto lab10 ; 
  2418.     } 
  2419.       } 
  2420.     } 
  2421.     incr ( bufptr2 ) ; 
  2422.   } 
  2423.   {
  2424.     initcommandexecution () ; 
  2425.     messwithentries = true ; 
  2426.     if ( ( numcites > 0 ) ) 
  2427.     {
  2428.       sortciteptr = numcites ; 
  2429.       do {
  2430.       decr ( sortciteptr ) ; 
  2431.     citeptr = citeinfo [ sortciteptr ] ; 
  2432.     ;
  2433. #ifdef TRACE
  2434.     {
  2435.       outpoolstr ( logfile , hashtext [ fnloc ] ) ; 
  2436.     } 
  2437.     {
  2438.       (void) ReverseFPuts( logfile ,  " to be iterated in reverse on " ) ; 
  2439.     } 
  2440.     {
  2441.       outpoolstr ( logfile , citelist [ citeptr ] ) ; 
  2442.     } 
  2443.     {
  2444.       (void) FPutC('\r', logfile );
  2445.     } 
  2446. #endif /* TRACE */
  2447.     executefn ( fnloc ) ; 
  2448.     checkcommandexecutio () ; 
  2449.       } while ( ! ( ( sortciteptr == 0 ) ) ) ; 
  2450.     } 
  2451.   } 
  2452.   lab10: ; 
  2453. void bstsortcommand (void) {
  2454.     /* 10 */ if ( ( ! readseen ) ) 
  2455.   {
  2456.     {
  2457.       (void) ReverseFPuts( logfile ,  "Illegal, sort command before read command" ) ; 
  2458.       (void) FPrintFStdErr(  "Illegal, sort command before read command" ) ; 
  2459.     } 
  2460.     {
  2461.       bsterrprintandlookfo () ; 
  2462.       goto lab10 ; 
  2463.     } 
  2464.   } 
  2465.   {
  2466.     ;
  2467. #ifdef TRACE
  2468.     {
  2469.       (void) FPrintF( logfile , "%s\r",  "Sorting the entries" ) ; 
  2470.     } 
  2471. #endif /* TRACE */
  2472.     if ( ( numcites > 1 ) ) 
  2473.     quicksort ( 0 , numcites - 1 ) ; 
  2474.     ;
  2475. #ifdef TRACE
  2476.     {
  2477.       (void) FPrintF( logfile , "%s\r",  "Done sorting" ) ; 
  2478.     } 
  2479. #endif /* TRACE */
  2480.   } 
  2481.   lab10: ; 
  2482. void bststringscommand (void) {
  2483.     /* 10 */ { 
  2484.     if ( ( ! eatbstwhitespace () ) ) 
  2485.     {
  2486.       eatbstprint () ; 
  2487.       {
  2488.     {
  2489.       (void) ReverseFPuts( logfile ,  "strings" ) ; 
  2490.       (void) FPrintFStdErr(  "strings" ) ; 
  2491.     } 
  2492.     {
  2493.       bsterrprintandlookfo () ; 
  2494.       goto lab10 ; 
  2495.     } 
  2496.       } 
  2497.     } 
  2498.   } 
  2499.   {
  2500.     if ( ( buffer [ bufptr2 ] != 123 ) ) 
  2501.     {
  2502.       bstleftbraceprint () ; 
  2503.       {
  2504.     {
  2505.       (void) ReverseFPuts( logfile ,  "strings" ) ; 
  2506.       (void) FPrintFStdErr(  "strings" ) ; 
  2507.     } 
  2508.     {
  2509.       bsterrprintandlookfo () ; 
  2510.       goto lab10 ; 
  2511.     } 
  2512.       } 
  2513.     } 
  2514.     incr ( bufptr2 ) ; 
  2515.   } 
  2516.   {
  2517.     if ( ( ! eatbstwhitespace () ) ) 
  2518.     {
  2519.       eatbstprint () ; 
  2520.       {
  2521.     {
  2522.       (void) ReverseFPuts( logfile ,  "strings" ) ; 
  2523.       (void) FPrintFStdErr(  "strings" ) ; 
  2524.     } 
  2525.     {
  2526.       bsterrprintandlookfo () ; 
  2527.       goto lab10 ; 
  2528.     } 
  2529.       } 
  2530.     } 
  2531.   } 
  2532.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  2533.       
  2534.     {
  2535.       scanidentifier ( 125 , 37 , 37 ) ; 
  2536.       if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  2537.       ; 
  2538.       else {
  2539.       
  2540.     bstidprint () ; 
  2541.     {
  2542.       {
  2543.         (void) ReverseFPuts( logfile ,  "strings" ) ; 
  2544.         (void) FPrintFStdErr(  "strings" ) ; 
  2545.       } 
  2546.       {
  2547.         bsterrprintandlookfo () ; 
  2548.         goto lab10 ; 
  2549.       } 
  2550.     } 
  2551.       } 
  2552.     } 
  2553.     {
  2554.     ;
  2555. #ifdef TRACE
  2556.       {
  2557.     outtoken ( logfile ) ; 
  2558.       } 
  2559.       {
  2560.     (void) FPrintF( logfile , "%s\r",  " is a string global-variable" ) ; 
  2561.       } 
  2562. #endif /* TRACE */
  2563.       lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  2564.       fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , true 
  2565.       ) ; 
  2566.       {
  2567.     if ( ( hashfound ) ) 
  2568.     {
  2569.       alreadyseenfunctionp ( fnloc ) ; 
  2570.       goto lab10 ; 
  2571.     } 
  2572.       } 
  2573.       fntype [ fnloc ] = 8 ; 
  2574.       ilkinfo [ fnloc ] = numglbstrs ; 
  2575.       if ( ( numglbstrs == 10 ) ) 
  2576.       {
  2577.     printoverflow () ; 
  2578.     {
  2579.       (void) FPrintF( logfile , "%s%ld\r",  "number of string global-variables " , (long)10 ) ; 
  2580.       (void) FPrintFStdErr( "%s%ld\r",  "number of string global-variables " , (long)10 ) ; 
  2581.     } 
  2582.     longjmp(jmp9998,1) ; 
  2583.       } 
  2584.       incr ( numglbstrs ) ; 
  2585.     } 
  2586.     {
  2587.       if ( ( ! eatbstwhitespace () ) ) 
  2588.       {
  2589.     eatbstprint () ; 
  2590.     {
  2591.       {
  2592.         (void) ReverseFPuts( logfile ,  "strings" ) ; 
  2593.         (void) FPrintFStdErr(  "strings" ) ; 
  2594.       } 
  2595.       {
  2596.         bsterrprintandlookfo () ; 
  2597.         goto lab10 ; 
  2598.       } 
  2599.     } 
  2600.       } 
  2601.     } 
  2602.   } 
  2603.   incr ( bufptr2 ) ; 
  2604.   lab10: ; 
  2605. void getbstcommandandproc (void) {
  2606.     /* 10 */ if ( ( ! scanalpha () ) ) 
  2607.   {
  2608.     {
  2609.       (void) FPrintF( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,       "\" can't start a style-file command" ) ; 
  2610.       (void) FPrintFStdErr( "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,       "\" can't start a style-file command" ) ; 
  2611.     } 
  2612.     {
  2613.       bsterrprintandlookfo () ; 
  2614.       goto lab10 ; 
  2615.     } 
  2616.   } 
  2617.   lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  2618.   commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
  2619.   , 4 , false ) ] ; 
  2620.   if ( ( ! hashfound ) ) 
  2621.   {
  2622.     printatoken () ; 
  2623.     {
  2624.       {
  2625.     (void) ReverseFPuts( logfile ,  " is an illegal style-file command" ) ; 
  2626.     (void) FPrintFStdErr(  " is an illegal style-file command" ) ; 
  2627.       } 
  2628.       {
  2629.     bsterrprintandlookfo () ; 
  2630.     goto lab10 ; 
  2631.       } 
  2632.     } 
  2633.   } 
  2634.   switch ( ( commandnum ) ) 
  2635.   {case 0 : 
  2636.     bstentrycommand () ; 
  2637.     break ; 
  2638.   case 1 : 
  2639.     bstexecutecommand () ; 
  2640.     break ; 
  2641.   case 2 : 
  2642.     bstfunctioncommand () ; 
  2643.     break ; 
  2644.   case 3 : 
  2645.     bstintegerscommand () ; 
  2646.     break ; 
  2647.   case 4 : 
  2648.     bstiteratecommand () ; 
  2649.     break ; 
  2650.   case 5 : 
  2651.     bstmacrocommand () ; 
  2652.     break ; 
  2653.   case 6 : 
  2654.     bstreadcommand () ; 
  2655.     break ; 
  2656.   case 7 : 
  2657.     bstreversecommand () ; 
  2658.     break ; 
  2659.   case 8 : 
  2660.     bstsortcommand () ; 
  2661.     break ; 
  2662.   case 9 : 
  2663.     bststringscommand () ; 
  2664.     break ; 
  2665.     default: 
  2666.     {
  2667.       {
  2668.     (void) ReverseFPuts( logfile ,  "Unknown style-file command" ) ; 
  2669.     (void) FPrintFStdErr(  "Unknown style-file command" ) ; 
  2670.       } 
  2671.       printconfusion () ; 
  2672.       longjmp(jmp9998,1) ; 
  2673.     } 
  2674.     break ; 
  2675.   } 
  2676.   lab10: ; 
  2677.  
  2678. static void deinitialize(void);
  2679. static void vincerealloc(void);
  2680.  
  2681.   // Added by Vince so we can re-run without quitting 
  2682.  
  2683. void initialize (void) {
  2684.     deinitialize();
  2685.     
  2686.     schar i  ; 
  2687.   hashloc k  ;
  2688.   
  2689.   /* Allocation has been changed by Vince */
  2690.   
  2691. #define ALLOC(t,p,c) {                                                        \
  2692.         p = (t) chkalloc( (long) ((long)sizeof(*(p)) * ((long)c)), (long)1);        \
  2693.         if ( p==0) { SysBeep(5); exit(0); };                                \
  2694. }
  2695.   
  2696.   ALLOC(char*, strpool, poolsize+1);
  2697.   ALLOC(short*, hashnext, 5001);
  2698.   ALLOC(long*, hashtext, 5001);
  2699.   ALLOC(char*, hashilk, 5001);
  2700.   ALLOC(long*, ilkinfo,5001);
  2701.   ALLOC(char*, fntype, 5001);
  2702.   ALLOC(short*, wizfunctions, wizfnspace + 1);
  2703.   ALLOC(long*, entryints, maxentints+1);
  2704.   ALLOC(char(*)[101], entrystrs, maxentstrs+1);
  2705.   ALLOC(char(*)[1001], globalstrs, 10); 
  2706.   ALLOC(long*, fieldinfo, maxfields + 1); 
  2707.   ALLOC(long*, citeinfo, maxcites + 1); 
  2708.   ALLOC(char*, buffer, bufsize + 1);
  2709.   ALLOC(char*, svbuffer, bufsize + 1);
  2710.   ALLOC(char*, exbuf, bufsize + 1);
  2711.   ALLOC(char*, outbuf, bufsize + 1);
  2712.   ALLOC(long*, nametok, bufsize + 1); 
  2713.   ALLOC(char*, namesepchar, bufsize + 1); 
  2714.   ALLOC(long*, citelist, maxcites + 1); 
  2715.   
  2716.   /* end of Vince's alterations */
  2717.   
  2718.   bad = 0 ; 
  2719.   if ( ( minprintline < 3 ) ) 
  2720.   bad = 1 ; 
  2721.   if ( ( maxprintline <= minprintline ) ) 
  2722.   bad = 10 * bad + 2 ; 
  2723.   if ( ( maxprintline >= bufsize ) ) 
  2724.   bad = 10 * bad + 3 ; 
  2725.   if ( ( 4253 < 128 ) ) 
  2726.   bad = 10 * bad + 4 ; 
  2727.   if ( ( 4253 > 5000 ) ) 
  2728.   bad = 10 * bad + 5 ; 
  2729.   if ( ( 4253 >= ( 16320 ) ) ) 
  2730.   bad = 10 * bad + 6 ; 
  2731.   if ( ( maxstrings > 5000 ) ) 
  2732.   bad = 10 * bad + 7 ; 
  2733.   if ( ( maxcites > maxstrings ) ) 
  2734.   bad = 10 * bad + 8 ; 
  2735.   if ( ( entstrsize > bufsize ) ) 
  2736.   bad = 10 * bad + 9 ; 
  2737.   if ( ( globstrsize > bufsize ) ) 
  2738.   bad = 100 * bad + 11 ; 
  2739.   if ( ( 10 < 2 * 4 + 2 ) ) 
  2740.   bad = 100 * bad + 22 ; 
  2741.   if ( ( bad > 0 ) ) 
  2742.   {
  2743.     (void) FPrintFStdErr( "%ld%s\r",  (long)bad , " is a bad bad" ) ; 
  2744.     uexit ( 0 ) ; 
  2745.   } 
  2746.   history = 0 ; 
  2747.   xchr [ 32 ] = ' ' ; 
  2748.   xchr [ 33 ] = '!' ; 
  2749.   xchr [ 34 ] = '"' ; 
  2750.   xchr [ 35 ] = '#' ; 
  2751.   xchr [ 36 ] = '$' ; 
  2752.   xchr [ 37 ] = '%' ; 
  2753.   xchr [ 38 ] = '&' ; 
  2754.   xchr [ 39 ] = '\'' ; 
  2755.   xchr [ 40 ] = '(' ; 
  2756.   xchr [ 41 ] = ')' ; 
  2757.   xchr [ 42 ] = '*' ; 
  2758.   xchr [ 43 ] = '+' ; 
  2759.   xchr [ 44 ] = ',' ; 
  2760.   xchr [ 45 ] = '-' ; 
  2761.   xchr [ 46 ] = '.' ; 
  2762.   xchr [ 47 ] = '/' ; 
  2763.   xchr [ 48 ] = '0' ; 
  2764.   xchr [ 49 ] = '1' ; 
  2765.   xchr [ 50 ] = '2' ; 
  2766.   xchr [ 51 ] = '3' ; 
  2767.   xchr [ 52 ] = '4' ; 
  2768.   xchr [ 53 ] = '5' ; 
  2769.   xchr [ 54 ] = '6' ; 
  2770.   xchr [ 55 ] = '7' ; 
  2771.   xchr [ 56 ] = '8' ; 
  2772.   xchr [ 57 ] = '9' ; 
  2773.   xchr [ 58 ] = ':' ; 
  2774.   xchr [ 59 ] = ';' ; 
  2775.   xchr [ 60 ] = '<' ; 
  2776.   xchr [ 61 ] = '=' ; 
  2777.   xchr [ 62 ] = '>' ; 
  2778.   xchr [ 63 ] = '?' ; 
  2779.   xchr [ 64 ] = '@' ; 
  2780.   xchr [ 65 ] = 'A' ; 
  2781.   xchr [ 66 ] = 'B' ; 
  2782.   xchr [ 67 ] = 'C' ; 
  2783.   xchr [ 68 ] = 'D' ; 
  2784.   xchr [ 69 ] = 'E' ; 
  2785.   xchr [ 70 ] = 'F' ; 
  2786.   xchr [ 71 ] = 'G' ; 
  2787.   xchr [ 72 ] = 'H' ; 
  2788.   xchr [ 73 ] = 'I' ; 
  2789.   xchr [ 74 ] = 'J' ; 
  2790.   xchr [ 75 ] = 'K' ; 
  2791.   xchr [ 76 ] = 'L' ; 
  2792.   xchr [ 77 ] = 'M' ; 
  2793.   xchr [ 78 ] = 'N' ; 
  2794.   xchr [ 79 ] = 'O' ; 
  2795.   xchr [ 80 ] = 'P' ; 
  2796.   xchr [ 81 ] = 'Q' ; 
  2797.   xchr [ 82 ] = 'R' ; 
  2798.   xchr [ 83 ] = 'S' ; 
  2799.   xchr [ 84 ] = 'T' ; 
  2800.   xchr [ 85 ] = 'U' ; 
  2801.   xchr [ 86 ] = 'V' ; 
  2802.   xchr [ 87 ] = 'W' ; 
  2803.   xchr [ 88 ] = 'X' ; 
  2804.   xchr [ 89 ] = 'Y' ; 
  2805.   xchr [ 90 ] = 'Z' ; 
  2806.   xchr [ 91 ] = '[' ; 
  2807.   xchr [ 92 ] = '\\' ; 
  2808.   xchr [ 93 ] = ']' ; 
  2809.   xchr [ 94 ] = '^' ; 
  2810.   xchr [ 95 ] = '_' ; 
  2811.   xchr [ 96 ] = '`' ; 
  2812.   xchr [ 97 ] = 'a' ; 
  2813.   xchr [ 98 ] = 'b' ; 
  2814.   xchr [ 99 ] = 'c' ; 
  2815.   xchr [ 100 ] = 'd' ; 
  2816.   xchr [ 101 ] = 'e' ; 
  2817.   xchr [ 102 ] = 'f' ; 
  2818.   xchr [ 103 ] = 'g' ; 
  2819.   xchr [ 104 ] = 'h' ; 
  2820.   xchr [ 105 ] = 'i' ; 
  2821.   xchr [ 106 ] = 'j' ; 
  2822.   xchr [ 107 ] = 'k' ; 
  2823.   xchr [ 108 ] = 'l' ; 
  2824.   xchr [ 109 ] = 'm' ; 
  2825.   xchr [ 110 ] = 'n' ; 
  2826.   xchr [ 111 ] = 'o' ; 
  2827.   xchr [ 112 ] = 'p' ; 
  2828.   xchr [ 113 ] = 'q' ; 
  2829.   xchr [ 114 ] = 'r' ; 
  2830.   xchr [ 115 ] = 's' ; 
  2831.   xchr [ 116 ] = 't' ; 
  2832.   xchr [ 117 ] = 'u' ; 
  2833.   xchr [ 118 ] = 'v' ; 
  2834.   xchr [ 119 ] = 'w' ; 
  2835.   xchr [ 120 ] = 'x' ; 
  2836.   xchr [ 121 ] = 'y' ; 
  2837.   xchr [ 122 ] = 'z' ; 
  2838.   xchr [ 123 ] = '{' ; 
  2839.   xchr [ 124 ] = '|' ; 
  2840.   xchr [ 125 ] = '}' ; 
  2841.   xchr [ 126 ] = '~' ; 
  2842.   xchr [ 0 ] = ' ' ; 
  2843.   xchr [ 127 ] = ' ' ; 
  2844.   {register integer for_end; i = 1 ; for_end = 31 ; if ( i <= for_end) do 
  2845.     xchr [ i ] = ' ' ; 
  2846.   while ( i++ < for_end ) ; } 
  2847.   xchr [ 9 ] = chr ( 9 ) ; 
  2848.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  2849.     xord [ chr ( i ) ] = 127 ; 
  2850.   while ( i++ < for_end ) ; } 
  2851.   {register integer for_end; i = 1 ; for_end = 126 ; if ( i <= for_end) do 
  2852.     xord [ xchr [ i ] ] = i ; 
  2853.   while ( i++ < for_end ) ; } 
  2854.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  2855.     lexclass [ i ] = 5 ; 
  2856.   while ( i++ < for_end ) ; } 
  2857.   {register integer for_end; i = 0 ; for_end = 31 ; if ( i <= for_end) do 
  2858.     lexclass [ i ] = 0 ; 
  2859.   while ( i++ < for_end ) ; } 
  2860.   lexclass [ 127 ] = 0 ; 
  2861.   lexclass [ 9 ] = 1 ; 
  2862.   lexclass [ 32 ] = 1 ; 
  2863.   lexclass [ 126 ] = 4 ; 
  2864.   lexclass [ 45 ] = 4 ; 
  2865.   {register integer for_end; i = 48 ; for_end = 57 ; if ( i <= for_end) do 
  2866.     lexclass [ i ] = 3 ; 
  2867.   while ( i++ < for_end ) ; } 
  2868.   {register integer for_end; i = 65 ; for_end = 90 ; if ( i <= for_end) do 
  2869.     lexclass [ i ] = 2 ; 
  2870.   while ( i++ < for_end ) ; } 
  2871.   {register integer for_end; i = 97 ; for_end = 122 ; if ( i <= for_end) do 
  2872.     lexclass [ i ] = 2 ; 
  2873.   while ( i++ < for_end ) ; } 
  2874.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  2875.     idclass [ i ] = 1 ; 
  2876.   while ( i++ < for_end ) ; } 
  2877.   {register integer for_end; i = 0 ; for_end = 31 ; if ( i <= for_end) do 
  2878.     idclass [ i ] = 0 ; 
  2879.   while ( i++ < for_end ) ; } 
  2880.   idclass [ 32 ] = 0 ; 
  2881.   idclass [ 9 ] = 0 ; 
  2882.   idclass [ 34 ] = 0 ; 
  2883.   idclass [ 35 ] = 0 ; 
  2884.   idclass [ 37 ] = 0 ; 
  2885.   idclass [ 39 ] = 0 ; 
  2886.   idclass [ 40 ] = 0 ; 
  2887.   idclass [ 41 ] = 0 ; 
  2888.   idclass [ 44 ] = 0 ; 
  2889.   idclass [ 61 ] = 0 ; 
  2890.   idclass [ 123 ] = 0 ; 
  2891.   idclass [ 125 ] = 0 ; 
  2892.   {register integer for_end; i = 0 ; for_end = 127 ; if ( i <= for_end) do 
  2893.     charwidth [ i ] = 0 ; 
  2894.   while ( i++ < for_end ) ; } 
  2895.   charwidth [ 32 ] = 278 ; 
  2896.   charwidth [ 33 ] = 278 ; 
  2897.   charwidth [ 34 ] = 500 ; 
  2898.   charwidth [ 35 ] = 833 ; 
  2899.   charwidth [ 36 ] = 500 ; 
  2900.   charwidth [ 37 ] = 833 ; 
  2901.   charwidth [ 38 ] = 778 ; 
  2902.   charwidth [ 39 ] = 278 ; 
  2903.   charwidth [ 40 ] = 389 ; 
  2904.   charwidth [ 41 ] = 389 ; 
  2905.   charwidth [ 42 ] = 500 ; 
  2906.   charwidth [ 43 ] = 778 ; 
  2907.   charwidth [ 44 ] = 278 ; 
  2908.   charwidth [ 45 ] = 333 ; 
  2909.   charwidth [ 46 ] = 278 ; 
  2910.   charwidth [ 47 ] = 500 ; 
  2911.   charwidth [ 48 ] = 500 ; 
  2912.   charwidth [ 49 ] = 500 ; 
  2913.   charwidth [ 50 ] = 500 ; 
  2914.   charwidth [ 51 ] = 500 ; 
  2915.   charwidth [ 52 ] = 500 ; 
  2916.   charwidth [ 53 ] = 500 ; 
  2917.   charwidth [ 54 ] = 500 ; 
  2918.   charwidth [ 55 ] = 500 ; 
  2919.   charwidth [ 56 ] = 500 ; 
  2920.   charwidth [ 57 ] = 500 ; 
  2921.   charwidth [ 58 ] = 278 ; 
  2922.   charwidth [ 59 ] = 278 ; 
  2923.   charwidth [ 60 ] = 278 ; 
  2924.   charwidth [ 61 ] = 778 ; 
  2925.   charwidth [ 62 ] = 472 ; 
  2926.   charwidth [ 63 ] = 472 ; 
  2927.   charwidth [ 64 ] = 778 ; 
  2928.   charwidth [ 65 ] = 750 ; 
  2929.   charwidth [ 66 ] = 708 ; 
  2930.   charwidth [ 67 ] = 722 ; 
  2931.   charwidth [ 68 ] = 764 ; 
  2932.   charwidth [ 69 ] = 681 ; 
  2933.   charwidth [ 70 ] = 653 ; 
  2934.   charwidth [ 71 ] = 785 ; 
  2935.   charwidth [ 72 ] = 750 ; 
  2936.   charwidth [ 73 ] = 361 ; 
  2937.   charwidth [ 74 ] = 514 ; 
  2938.   charwidth [ 75 ] = 778 ; 
  2939.   charwidth [ 76 ] = 625 ; 
  2940.   charwidth [ 77 ] = 917 ; 
  2941.   charwidth [ 78 ] = 750 ; 
  2942.   charwidth [ 79 ] = 778 ; 
  2943.   charwidth [ 80 ] = 681 ; 
  2944.   charwidth [ 81 ] = 778 ; 
  2945.   charwidth [ 82 ] = 736 ; 
  2946.   charwidth [ 83 ] = 556 ; 
  2947.   charwidth [ 84 ] = 722 ; 
  2948.   charwidth [ 85 ] = 750 ; 
  2949.   charwidth [ 86 ] = 750 ; 
  2950.   charwidth [ 87 ] = 1028 ; 
  2951.   charwidth [ 88 ] = 750 ; 
  2952.   charwidth [ 89 ] = 750 ; 
  2953.   charwidth [ 90 ] = 611 ; 
  2954.   charwidth [ 91 ] = 278 ; 
  2955.   charwidth [ 92 ] = 500 ; 
  2956.   charwidth [ 93 ] = 278 ; 
  2957.   charwidth [ 94 ] = 500 ; 
  2958.   charwidth [ 95 ] = 278 ; 
  2959.   charwidth [ 96 ] = 278 ; 
  2960.   charwidth [ 97 ] = 500 ; 
  2961.   charwidth [ 98 ] = 556 ; 
  2962.   charwidth [ 99 ] = 444 ; 
  2963.   charwidth [ 100 ] = 556 ; 
  2964.   charwidth [ 101 ] = 444 ; 
  2965.   charwidth [ 102 ] = 306 ; 
  2966.   charwidth [ 103 ] = 500 ; 
  2967.   charwidth [ 104 ] = 556 ; 
  2968.   charwidth [ 105 ] = 278 ; 
  2969.   charwidth [ 106 ] = 306 ; 
  2970.   charwidth [ 107 ] = 528 ; 
  2971.   charwidth [ 108 ] = 278 ; 
  2972.   charwidth [ 109 ] = 833 ; 
  2973.   charwidth [ 110 ] = 556 ; 
  2974.   charwidth [ 111 ] = 500 ; 
  2975.   charwidth [ 112 ] = 556 ; 
  2976.   charwidth [ 113 ] = 528 ; 
  2977.   charwidth [ 114 ] = 392 ; 
  2978.   charwidth [ 115 ] = 394 ; 
  2979.   charwidth [ 116 ] = 389 ; 
  2980.   charwidth [ 117 ] = 556 ; 
  2981.   charwidth [ 118 ] = 528 ; 
  2982.   charwidth [ 119 ] = 722 ; 
  2983.   charwidth [ 120 ] = 528 ; 
  2984.   charwidth [ 121 ] = 528 ; 
  2985.   charwidth [ 122 ] = 444 ; 
  2986.   charwidth [ 123 ] = 500 ; 
  2987.   charwidth [ 124 ] = 1000 ; 
  2988.   charwidth [ 125 ] = 500 ; 
  2989.   charwidth [ 126 ] = 500 ; 
  2990.   {register integer for_end; k = 1 ; for_end = 5000 ; if ( k <= for_end) do 
  2991.     {
  2992.       hashnext [ k ] = 0 ; 
  2993.       hashtext [ k ] = 0 ; 
  2994.     } 
  2995.   while ( k++ < for_end ) ; } 
  2996.   hashused = 5001 ; 
  2997.   poolptr = 0 ; 
  2998.   strptr = 1 ; 
  2999.   strstart [ strptr ] = poolptr ; 
  3000.   bibptr = 0 ; 
  3001.   bibseen = false ; 
  3002.   bststr = 0 ; 
  3003.   bstseen = false ; 
  3004.   citeptr = 0 ; 
  3005.   citationseen = false ; 
  3006.   allentries = false ; 
  3007.   wizdefptr = 0 ; 
  3008.   numentints = 0 ; 
  3009.   numentstrs = 0 ; 
  3010.   numfields = 0 ; 
  3011.   strglbptr = 0 ; 
  3012.   while ( ( strglbptr < 10 ) ) {
  3013.       
  3014.     glbstrptr [ strglbptr ] = 0 ; 
  3015.     glbstrend [ strglbptr ] = 0 ; 
  3016.     incr ( strglbptr ) ; 
  3017.   } 
  3018.   numglbstrs = 0 ; 
  3019.   entryseen = false ; 
  3020.   readseen = false ; 
  3021.   readperformed = false ; 
  3022.   readingcompleted = false ; 
  3023.   readcompleted = false ; 
  3024.   implfnnum = 0 ; 
  3025.   outbuflength = 0 ; 
  3026.   predefcertainstrings () ; 
  3027.   getthetoplevelauxfil () ; 
  3028.   
  3029.  
  3030. static void deinitialize(void) {
  3031.     // added these which seem to be important
  3032.     citeptr = 0;
  3033.     // this next one here caused me big problems
  3034.     // it is probably indicative of a subtle bug in
  3035.     // the old mac BibTeX that it was never zeroed.
  3036.     citexptr = 0;
  3037.     numcites = 0;
  3038.     oldnumcites = 0;
  3039.     strpool = 0;
  3040.      hashnext = 0;
  3041.     hashtext = 0;
  3042.     hashilk = 0;
  3043.     ilkinfo = 0;
  3044.     fntype = 0;
  3045.      wizfunctions = 0;
  3046.     entryints = 0;
  3047.     entrystrs = 0;
  3048.     globalstrs = 0;
  3049.     fieldinfo = 0;
  3050.     citeinfo = 0;
  3051.     buffer = 0;
  3052.     svbuffer = 0;
  3053.     exbuf = 0;
  3054.     outbuf = 0;
  3055.     nametok = 0;
  3056.     namesepchar = 0;
  3057.     citelist = 0;
  3058.   lab31 = 0;
  3059.   for(short i=0;i<=auxstacksize;i++) {
  3060.       auxfile[i] = 0;
  3061.       auxlnstack[i] = 0;
  3062.   }
  3063.   auxptr = 0;
  3064.   bbllinenum = biblinenum = bstlinenum = 0;
  3065.   bufptr2 = 0;
  3066.   errcount = 0;
  3067.   last = 0;
  3068.   for(short i=0;i<70;i++) {
  3069.       jmp32[i] = jmp9998[i] = 0;
  3070.   }
  3071.   
  3072. }
  3073.  
  3074. #ifdef GIVE_UP_TIME
  3075. static void give_up_some_time(void);
  3076.  
  3077. void give_up_some_time(void){
  3078.     cede_time();
  3079.     vincerealloc();
  3080. }
  3081. #endif
  3082.  
  3083. void vincerealloc(void){
  3084.     // reset to the beginning
  3085.     ptohrealloc(1);
  3086.     
  3087. #undef ALLOC
  3088. #define ALLOC(t,p,c) p = (t) ptohrealloc(0);
  3089.   
  3090.   ALLOC(char*, strpool, poolsize+1);
  3091.   ALLOC(short*, hashnext, 5001);
  3092.   ALLOC(long*, hashtext, 5001);
  3093.   ALLOC(char*, hashilk, 5001);
  3094.   ALLOC(long*, ilkinfo,5001);
  3095.   ALLOC(char*, fntype, 5001);
  3096.   ALLOC(short*, wizfunctions, wizfnspace + 1);
  3097.   ALLOC(long*, entryints, maxentints+1);
  3098.   ALLOC(char(*)[101], entrystrs, maxentstrs+1);
  3099.   ALLOC(char(*)[1001], globalstrs, 10); 
  3100.   ALLOC(long*, fieldinfo, maxfields + 1); 
  3101.   ALLOC(long*, citeinfo, maxcites + 1); 
  3102.   ALLOC(char*, buffer, bufsize + 1);
  3103.   ALLOC(char*, svbuffer, bufsize + 1);
  3104.   ALLOC(char*, exbuf, bufsize + 1);
  3105.   ALLOC(char*, outbuf, bufsize + 1);
  3106.   ALLOC(long*, nametok, bufsize + 1); 
  3107.   ALLOC(char*, namesepchar, bufsize + 1); 
  3108.   ALLOC(long*, citelist, maxcites + 1); 
  3109. }
  3110. void main_body(void) {
  3111.   initialize () ; 
  3112.  
  3113.     //extern alphafile logfile;
  3114.       //logfile = logfile;
  3115.       
  3116.     
  3117.   {
  3118.     (void) FPrintF( logfile , "%s\r",  "This is BibTeX, C Version 0.99c" ) ; 
  3119.     (void) FPrintFStdErr( "%s\r",  "This is BibTeX, C Version 0.99c" ) ; 
  3120.   } 
  3121.   {
  3122.     (void) ReverseFPuts( logfile ,  "The top-level auxiliary file: " ) ; 
  3123.     (void) FPrintFStdErr(  "The top-level auxiliary file: " ) ; 
  3124.   } 
  3125.   printauxname () ; 
  3126.   while ( lab31==0 ) {
  3127.       
  3128.     incr ( auxlnstack [ auxptr ] ) ; 
  3129.     if ( ( ! inputln ( auxfile [ auxptr ] ) ) ) 
  3130.     poptheauxstack () ; 
  3131.     else getauxcommandandproc () ; 
  3132.   } 
  3133. #ifdef TRACE
  3134.   {
  3135.     (void) FPrintF( logfile , "%s\r",  "Finished reading the auxiliary file(s)" ) ; 
  3136.   } 
  3137. #endif /* TRACE */
  3138.    lastcheckforauxerror () ; 
  3139.   if ( ( bststr == 0 ) ) 
  3140.   goto lab9932 ; 
  3141.   bstlinenum = 0 ; 
  3142.   bbllinenum = 1 ; 
  3143.   bufptr2 = last ; 
  3144.   if(setjmp(jmp9998)==1) goto lab9998;if(setjmp(jmp32)==0)while(true) 
  3145.   {
  3146.     if ( ( ! eatbstwhitespace () ) ) 
  3147.     break ; 
  3148.     getbstcommandandproc () ; 
  3149.   } 
  3150.    aclose ( bstfile ) ; 
  3151.   lab9932: aclose ( bblfile ) ; 
  3152.   lab9998: {
  3153.       
  3154.     if ( ( ( readperformed ) && ( ! readingcompleted ) ) ) 
  3155.     {
  3156.       {
  3157.     (void) FPrintF( logfile , "%s%ld%s",  "Aborted at line " , (long)biblinenum , " of file " ) ; 
  3158.     (void) FPrintFStdErr( "%s%ld%s",  "Aborted at line " , (long)biblinenum , " of file " ) ; 
  3159.       } 
  3160.       printbibname () ; 
  3161.     } 
  3162.     traceandstatprinting () ; 
  3163.     switch ( ( history ) ) 
  3164.     {case 0 : 
  3165.       ; 
  3166.       break ; 
  3167.     case 1 : 
  3168.       {
  3169.     if ( ( errcount == 1 ) ) 
  3170.     {
  3171.       (void) FPrintF( logfile , "%s\r",  "(There was 1 warning)" ) ; 
  3172.       (void) FPrintFStdErr( "%s\r",  "(There was 1 warning)" ) ; 
  3173.     } 
  3174.     else {
  3175.         
  3176.       (void) FPrintF( logfile , "%s%ld%s\r",  "(There were " , (long)errcount , " warnings)" ) ; 
  3177.       (void) FPrintFStdErr( "%s%ld%s\r",  "(There were " , (long)errcount , " warnings)" ) ; 
  3178.     } 
  3179.       } 
  3180.       break ; 
  3181.     case 2 : 
  3182.       {
  3183.     if ( ( errcount == 1 ) ) 
  3184.     {
  3185.       (void) FPrintF( logfile , "%s\r",  "(There was 1 error message)" ) ; 
  3186.       (void) FPrintFStdErr( "%s\r",  "(There was 1 error message)" ) ; 
  3187.     } 
  3188.     else {
  3189.         
  3190.       (void) FPrintF( logfile , "%s%ld%s\r",  "(There were " , (long)errcount , " error messages)" ) 
  3191.       ; 
  3192.       (void) FPrintFStdErr( "%s%ld%s\r",  "(There were " , (long)errcount , " error messages)" ) 
  3193.       ; 
  3194.     } 
  3195.       } 
  3196.       break ; 
  3197.     case 3 : 
  3198.       {
  3199.     (void) FPrintF( logfile , "%s\r",  "(That was a fatal error)" ) ; 
  3200.     (void) FPrintFStdErr( "%s\r",  "(That was a fatal error)" ) ; 
  3201.       } 
  3202.       break ; 
  3203.       default: 
  3204.       {
  3205.     {
  3206.       (void) ReverseFPuts( logfile ,  "History is bunk" ) ; 
  3207.       (void) FPrintFStdErr(  "History is bunk" ) ; 
  3208.     } 
  3209.     printconfusion () ; 
  3210.       } 
  3211.       break ; 
  3212.     } 
  3213.     aclose ( logfile ) ; 
  3214.   } 
  3215.   lab9999: ; 
  3216. #include "BibTeX.h"
  3217.  
  3218. #include "BibTeX.p"
  3219. #include "globals.h"
  3220. #include "coerce.h"
  3221.  
  3222. void
  3223. #ifdef STDC
  3224. zbuildin (pdstype pds ,pdslen len ,hashloc * fnhashloc ,bltinrange bltinnum ) 
  3225. #else
  3226. zbuildin ( pds , len , fnhashloc , bltinnum ) 
  3227. pdstype pds ; 
  3228. pdslen len ; 
  3229. hashloc * fnhashloc ; 
  3230. bltinrange bltinnum ; 
  3231. #endif
  3232. {predefine ( pds , len , 11 ) ; 
  3233. *  fnhashloc = predefloc ; 
  3234.   fntype [ *fnhashloc ] = 0 ; 
  3235.   ilkinfo [ *fnhashloc ] = bltinnum ; 
  3236.     ;
  3237. #ifdef STAT
  3238.   bltinloc [ bltinnum ] = *fnhashloc ; 
  3239.   executioncount [ bltinnum ] = 0 ; 
  3240. #endif /* STAT */
  3241. void predefcertainstrings (void) {
  3242.     predefine ( ".aux        " , 4 , 7 ) ;
  3243.   sauxextension = hashtext [ predefloc ] ; 
  3244.   predefine ( ".bbl        " , 4 , 7 ) ; 
  3245.   sbblextension = hashtext [ predefloc ] ; 
  3246.   predefine ( ".blg        " , 4 , 7 ) ; 
  3247.   slogextension = hashtext [ predefloc ] ; 
  3248.   predefine ( ".bst        " , 4 , 7 ) ; 
  3249.   sbstextension = hashtext [ predefloc ] ; 
  3250.   predefine ( ".bib        " , 4 , 7 ) ; 
  3251.   sbibextension = hashtext [ predefloc ] ; 
  3252.   predefine ( "texinputs:  " , 10 , 8 ) ; 
  3253.   sbstarea = hashtext [ predefloc ] ; 
  3254.   predefine ( "texbib:     " , 7 , 8 ) ; 
  3255.   sbibarea = hashtext [ predefloc ] ; 
  3256.   predefine ( "\\citation   " , 9 , 2 ) ; 
  3257.   ilkinfo [ predefloc ] = 2 ; 
  3258.   predefine ( "\\bibdata    " , 8 , 2 ) ; 
  3259.   ilkinfo [ predefloc ] = 0 ; 
  3260.   predefine ( "\\bibstyle   " , 9 , 2 ) ; 
  3261.   ilkinfo [ predefloc ] = 1 ; 
  3262.   predefine ( "\\@input     " , 7 , 2 ) ; 
  3263.   ilkinfo [ predefloc ] = 3 ; 
  3264.   predefine ( "entry       " , 5 , 4 ) ; 
  3265.   ilkinfo [ predefloc ] = 0 ; 
  3266.   predefine ( "execute     " , 7 , 4 ) ; 
  3267.   ilkinfo [ predefloc ] = 1 ; 
  3268.   predefine ( "function    " , 8 , 4 ) ; 
  3269.   ilkinfo [ predefloc ] = 2 ; 
  3270.   predefine ( "integers    " , 8 , 4 ) ; 
  3271.   ilkinfo [ predefloc ] = 3 ; 
  3272.   predefine ( "iterate     " , 7 , 4 ) ; 
  3273.   ilkinfo [ predefloc ] = 4 ; 
  3274.   predefine ( "macro       " , 5 , 4 ) ; 
  3275.   ilkinfo [ predefloc ] = 5 ; 
  3276.   predefine ( "read        " , 4 , 4 ) ; 
  3277.   ilkinfo [ predefloc ] = 6 ; 
  3278.   predefine ( "reverse     " , 7 , 4 ) ; 
  3279.   ilkinfo [ predefloc ] = 7 ; 
  3280.   predefine ( "sort        " , 4 , 4 ) ; 
  3281.   ilkinfo [ predefloc ] = 8 ; 
  3282.   predefine ( "strings     " , 7 , 4 ) ; 
  3283.   ilkinfo [ predefloc ] = 9 ; 
  3284.   predefine ( "comment     " , 7 , 12 ) ; 
  3285.   ilkinfo [ predefloc ] = 0 ; 
  3286.   predefine ( "preamble    " , 8 , 12 ) ; 
  3287.   ilkinfo [ predefloc ] = 1 ; 
  3288.   predefine ( "string      " , 6 , 12 ) ; 
  3289.   ilkinfo [ predefloc ] = 2 ; 
  3290.   buildin ( "=           " , 1 , bequals , 0 ) ; 
  3291.   buildin ( ">           " , 1 , bgreaterthan , 1 ) ; 
  3292.   buildin ( "<           " , 1 , blessthan , 2 ) ; 
  3293.   buildin ( "+           " , 1 , bplus , 3 ) ; 
  3294.   buildin ( "-           " , 1 , bminus , 4 ) ; 
  3295.   buildin ( "*           " , 1 , bconcatenate , 5 ) ; 
  3296.   buildin ( ":=          " , 2 , bgets , 6 ) ; 
  3297.   buildin ( "add.period$ " , 11 , baddperiod , 7 ) ; 
  3298.   buildin ( "call.type$  " , 10 , bcalltype , 8 ) ; 
  3299.   buildin ( "change.case$" , 12 , bchangecase , 9 ) ; 
  3300.   buildin ( "chr.to.int$ " , 11 , bchrtoint , 10 ) ; 
  3301.   buildin ( "cite$       " , 5 , bcite , 11 ) ; 
  3302.   buildin ( "duplicate$  " , 10 , bduplicate , 12 ) ; 
  3303.   buildin ( "empty$      " , 6 , bempty , 13 ) ; 
  3304.   buildin ( "format.name$" , 12 , bformatname , 14 ) ; 
  3305.   buildin ( "if$         " , 3 , bif , 15 ) ; 
  3306.   buildin ( "int.to.chr$ " , 11 , binttochr , 16 ) ; 
  3307.   buildin ( "int.to.str$ " , 11 , binttostr , 17 ) ; 
  3308.   buildin ( "missing$    " , 8 , bmissing , 18 ) ; 
  3309.   buildin ( "newline$    " , 8 , bnewline , 19 ) ; 
  3310.   buildin ( "num.names$  " , 10 , bnumnames , 20 ) ; 
  3311.   buildin ( "pop$        " , 4 , bpop , 21 ) ; 
  3312.   buildin ( "preamble$   " , 9 , bpreamble , 22 ) ; 
  3313.   buildin ( "purify$     " , 7 , bpurify , 23 ) ; 
  3314.   buildin ( "quote$      " , 6 , bquote , 24 ) ; 
  3315.   buildin ( "skip$       " , 5 , bskip , 25 ) ; 
  3316.   buildin ( "stack$      " , 6 , bstack , 26 ) ; 
  3317.   buildin ( "substring$  " , 10 , bsubstring , 27 ) ; 
  3318.   buildin ( "swap$       " , 5 , bswap , 28 ) ; 
  3319.   buildin ( "text.length$" , 12 , btextlength , 29 ) ; 
  3320.   buildin ( "text.prefix$" , 12 , btextprefix , 30 ) ; 
  3321.   buildin ( "top$        " , 4 , btopstack , 31 ) ; 
  3322.   buildin ( "type$       " , 5 , btype , 32 ) ; 
  3323.   buildin ( "warning$    " , 8 , bwarning , 33 ) ; 
  3324.   buildin ( "width$      " , 6 , bwidth , 35 ) ; 
  3325.   buildin ( "while$      " , 6 , bwhile , 34 ) ; 
  3326.   buildin ( "width$      " , 6 , bwidth , 35 ) ; 
  3327.   buildin ( "write$      " , 6 , bwrite , 36 ) ; 
  3328.   predefine ( "            " , 0 , 0 ) ; 
  3329.   snull = hashtext [ predefloc ] ; 
  3330.   fntype [ predefloc ] = 3 ; 
  3331.   predefine ( "default.type" , 12 , 0 ) ; 
  3332.   sdefault = hashtext [ predefloc ] ; 
  3333.   fntype [ predefloc ] = 3 ; 
  3334.   bdefault = bskip ; 
  3335.   preambleptr = 0 ; 
  3336.   predefine ( "i           " , 1 , 14 ) ; 
  3337.   ilkinfo [ predefloc ] = 0 ; 
  3338.   predefine ( "j           " , 1 , 14 ) ; 
  3339.   ilkinfo [ predefloc ] = 1 ; 
  3340.   predefine ( "oe          " , 2 , 14 ) ; 
  3341.   ilkinfo [ predefloc ] = 2 ; 
  3342.   predefine ( "OE          " , 2 , 14 ) ; 
  3343.   ilkinfo [ predefloc ] = 3 ; 
  3344.   predefine ( "ae          " , 2 , 14 ) ; 
  3345.   ilkinfo [ predefloc ] = 4 ; 
  3346.   predefine ( "AE          " , 2 , 14 ) ; 
  3347.   ilkinfo [ predefloc ] = 5 ; 
  3348.   predefine ( "aa          " , 2 , 14 ) ; 
  3349.   ilkinfo [ predefloc ] = 6 ; 
  3350.   predefine ( "AA          " , 2 , 14 ) ; 
  3351.   ilkinfo [ predefloc ] = 7 ; 
  3352.   predefine ( "o           " , 1 , 14 ) ; 
  3353.   ilkinfo [ predefloc ] = 8 ; 
  3354.   predefine ( "O           " , 1 , 14 ) ; 
  3355.   ilkinfo [ predefloc ] = 9 ; 
  3356.   predefine ( "l           " , 1 , 14 ) ; 
  3357.   ilkinfo [ predefloc ] = 10 ; 
  3358.   predefine ( "L           " , 1 , 14 ) ; 
  3359.   ilkinfo [ predefloc ] = 11 ; 
  3360.   predefine ( "ss          " , 2 , 14 ) ; 
  3361.   ilkinfo [ predefloc ] = 12 ; 
  3362.   predefine ( "crossref    " , 8 , 11 ) ; 
  3363.   fntype [ predefloc ] = 4 ; 
  3364.   ilkinfo [ predefloc ] = numfields ; 
  3365.   crossrefnum = numfields ; 
  3366.   incr ( numfields ) ; 
  3367.   numpredefinedfields = numfields ; 
  3368.   predefine ( "sort.key$   " , 9 , 11 ) ; 
  3369.   fntype [ predefloc ] = 6 ; 
  3370.   ilkinfo [ predefloc ] = numentstrs ; 
  3371.   sortkeynum = numentstrs ; 
  3372.   incr ( numentstrs ) ; 
  3373.   predefine ( "entry.max$  " , 10 , 11 ) ; 
  3374.   fntype [ predefloc ] = 7 ; 
  3375.   ilkinfo [ predefloc ] = entstrsize ; 
  3376.   predefine ( "global.max$ " , 11 , 11 ) ; 
  3377.   fntype [ predefloc ] = 7 ; 
  3378.   ilkinfo [ predefloc ] = globstrsize ; 
  3379. #ifdef STDC
  3380. boolean zscan1 (ASCIIcode char1 ) 
  3381. #else
  3382. boolean zscan1 ( char1 ) 
  3383. ASCIIcode char1 ; 
  3384. #endif
  3385. {register boolean Result; bufptr1 = bufptr2 ; 
  3386.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( bufptr2 < last ) ) ) incr ( 
  3387.   bufptr2 ) ; 
  3388.   if ( ( bufptr2 < last ) ) 
  3389.   Result = true ; 
  3390.   else Result = false ; 
  3391.   return(Result) ; 
  3392. #ifdef STDC
  3393. boolean zscan1white (ASCIIcode char1 ) 
  3394. #else
  3395. boolean zscan1white ( char1 ) 
  3396. ASCIIcode char1 ; 
  3397. #endif
  3398. {register boolean Result; bufptr1 = bufptr2 ; 
  3399.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( buffer [ bufptr2 ] 
  3400.   != char1 ) && ( bufptr2 < last ) ) ) incr ( bufptr2 ) ; 
  3401.   if ( ( bufptr2 < last ) ) 
  3402.   Result = true ; 
  3403.   else Result = false ; 
  3404.   return(Result) ; 
  3405. #ifdef STDC
  3406. boolean zscan2 (ASCIIcode char1 ,ASCIIcode char2 ) 
  3407. #else
  3408. boolean zscan2 ( char1 , char2 ) 
  3409. ASCIIcode char1 , char2 ; 
  3410. #endif
  3411. {register boolean Result; bufptr1 = bufptr2 ; 
  3412.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( buffer [ bufptr2 ] != char2 ) 
  3413.   && ( bufptr2 < last ) ) ) incr ( bufptr2 ) ; 
  3414.   if ( ( bufptr2 < last ) ) 
  3415.   Result = true ; 
  3416.   else Result = false ; 
  3417.   return(Result) ; 
  3418. #ifdef STDC
  3419. boolean zscan2white (ASCIIcode char1 ,ASCIIcode char2 ) 
  3420. #else
  3421. boolean zscan2white ( char1 , char2 ) 
  3422. ASCIIcode char1 , char2 ; 
  3423. #endif
  3424. {register boolean Result; bufptr1 = bufptr2 ; 
  3425.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( buffer [ bufptr2 ] != char2 ) 
  3426.   && ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( bufptr2 < last ) ) ) incr ( 
  3427.   bufptr2 ) ; 
  3428.   if ( ( bufptr2 < last ) ) 
  3429.   Result = true ; 
  3430.   else Result = false ; 
  3431.   return(Result) ; 
  3432. }
  3433. #ifdef STDC
  3434. boolean zscan3 (ASCIIcode char1 ,ASCIIcode char2 ,ASCIIcode char3 ) 
  3435. #else
  3436. boolean zscan3 ( char1 , char2 , char3 ) 
  3437. ASCIIcode char1 , char2 , char3 ; 
  3438. #endif
  3439. {register boolean Result; bufptr1 = bufptr2 ; 
  3440.   while ( ( ( buffer [ bufptr2 ] != char1 ) && ( buffer [ bufptr2 ] != char2 ) 
  3441.   && ( buffer [ bufptr2 ] != char3 ) && ( bufptr2 < last ) ) ) incr ( bufptr2 
  3442.   ) ; 
  3443.   if ( ( bufptr2 < last ) ) 
  3444.   Result = true ; 
  3445.   else Result = false ; 
  3446.   return(Result) ; 
  3447. boolean scanalpha () {
  3448.     register boolean Result; bufptr1 = bufptr2 ; 
  3449.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 2 ) && ( bufptr2 < last ) ) ) 
  3450.   incr ( bufptr2 ) ; 
  3451.   if ( ( ( bufptr2 - bufptr1 ) == 0 ) ) 
  3452.   Result = false ; 
  3453.   else Result = true ; 
  3454.   return(Result) ; 
  3455. void
  3456. #ifdef STDC
  3457. zscanidentifier (ASCIIcode char1 ,ASCIIcode char2 ,ASCIIcode char3 ) 
  3458. #else
  3459. zscanidentifier ( char1 , char2 , char3 ) 
  3460. ASCIIcode char1 , char2 , char3 ; 
  3461. #endif
  3462. {bufptr1 = bufptr2 ; 
  3463.   if ( ( lexclass [ buffer [ bufptr2 ] ] != 3 ) ) 
  3464.   while ( ( ( idclass [ buffer [ bufptr2 ] ] == 1 ) && ( bufptr2 < last ) ) ) 
  3465.   incr ( bufptr2 ) ; 
  3466.   if ( ( ( bufptr2 - bufptr1 ) == 0 ) ) 
  3467.   scanresult = 0 ; 
  3468.   else if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last ) 
  3469.   ) ) 
  3470.   scanresult = 3 ; 
  3471.   else if ( ( ( buffer [ bufptr2 ] == char1 ) || ( buffer [ bufptr2 ] == char2 
  3472.   ) || ( buffer [ bufptr2 ] == char3 ) ) ) 
  3473.   scanresult = 1 ; 
  3474.   else scanresult = 2 ; 
  3475. boolean scannonneginteger () {
  3476.     register boolean Result; bufptr1 = bufptr2 ; 
  3477.   tokenvalue = 0 ; 
  3478.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 3 ) && ( bufptr2 < last ) ) ) 
  3479.   {
  3480.     tokenvalue = tokenvalue * 10 + ( buffer [ bufptr2 ] - 48 ) ; 
  3481.     incr ( bufptr2 ) ; 
  3482.   } 
  3483.   if ( ( ( bufptr2 - bufptr1 ) == 0 ) ) 
  3484.   Result = false ; 
  3485.   else Result = true ; 
  3486.   return(Result) ; 
  3487. boolean scaninteger () {
  3488.     register boolean Result; schar signlength  ; 
  3489.   bufptr1 = bufptr2 ; 
  3490.   if ( ( buffer [ bufptr2 ] == 45 ) ) 
  3491.   {
  3492.     signlength = 1 ; 
  3493.     incr ( bufptr2 ) ; 
  3494.   } 
  3495.   else signlength = 0 ; 
  3496.   tokenvalue = 0 ; 
  3497.   while ( ( ( lexclass [ buffer [ bufptr2 ] ] == 3 ) && ( bufptr2 < last ) ) ) 
  3498.   {
  3499.     tokenvalue = tokenvalue * 10 + ( buffer [ bufptr2 ] - 48 ) ; 
  3500.     incr ( bufptr2 ) ; 
  3501.   } 
  3502.   if ( ( ( signlength == 1 ) ) ) 
  3503.   tokenvalue = - (integer) tokenvalue ; 
  3504.   if ( ( ( bufptr2 - bufptr1 ) == signlength ) ) 
  3505.   Result = false ; 
  3506.   else Result = true ; 
  3507.   return(Result) ; 
  3508. boolean scanwhitespace () {
  3509.     register boolean Result; while ( ( ( lexclass [ 
  3510.   buffer [ bufptr2 ] ] == 1 ) && ( bufptr2 < last ) ) ) incr ( bufptr2 ) ; 
  3511.   if ( ( bufptr2 < last ) ) 
  3512.   Result = true ; 
  3513.   else Result = false ; 
  3514.   return(Result) ; 
  3515. boolean eatbstwhitespace () {
  3516.     /* 10 */ register boolean Result; while ( true ) 
  3517.   {
  3518.     if ( ( scanwhitespace () ) ) 
  3519.     if ( ( buffer [ bufptr2 ] != 37 ) ) 
  3520.     {
  3521.       Result = true ; 
  3522.       goto lab10 ; 
  3523.     } 
  3524.     if ( ( ! inputln ( bstfile ) ) ) 
  3525.     {
  3526.       Result = false ; 
  3527.       goto lab10 ; 
  3528.     } 
  3529.     incr ( bstlinenum ) ; 
  3530.     bufptr2 = 0 ; 
  3531.   } 
  3532.   lab10: ; 
  3533.   return(Result) ; 
  3534. void skiptokenprint (void) {
  3535.     { 
  3536.     (void) FPutC( '-' , logfile );
  3537.     (void) FPutC( '-' );
  3538.   } 
  3539.   bstlnnumprint () ; 
  3540.   markerror () ; 
  3541.   if ( ( scan2white ( 125 , 37 ) ) ) 
  3542.   ; 
  3543. void printrecursionillega (void) {
  3544.     
  3545.     ;
  3546. #ifdef TRACE
  3547.   {
  3548.     (void) FPutC('\r', logfile );
  3549.   } 
  3550. #endif /* TRACE */
  3551.   {
  3552.     (void) FPrintF( logfile , "%s\r",  "Curse you, wizard, before you recurse me:" ) ; 
  3553.     (void) FPrintFStdErr( "%s\r",  "Curse you, wizard, before you recurse me:" ) ; 
  3554.   } 
  3555.   {
  3556.     (void) ReverseFPuts( logfile ,  "function " ) ; 
  3557.     (void) FPrintFStdErr(  "function " ) ; 
  3558.   } 
  3559.   printatoken () ; 
  3560.   {
  3561.     (void) FPrintF( logfile , "%s\r",  " is illegal in its own definition" ) ; 
  3562.     (void) FPrintFStdErr( "%s\r",  " is illegal in its own definition" ) ; 
  3563.   } 
  3564.   skiptokenprint () ; 
  3565. void skptokenunknownfunct (void) {
  3566.     printatoken () ; 
  3567.   {
  3568.     (void) ReverseFPuts( logfile ,  " is an unknown function" ) ; 
  3569.     (void) FPrintFStdErr(  " is an unknown function" ) ; 
  3570.   } 
  3571.   skiptokenprint () ; 
  3572. void skipillegalstuffafte (void) {
  3573.     { 
  3574.     (void) FPrintF( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" can't follow a literal" ) ; 
  3575.     (void) FPrintFStdErr( "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" can't follow a literal" ) ; 
  3576.   } 
  3577.   skiptokenprint () ; 
  3578. void
  3579. #ifdef STDC
  3580. zscanfndef (hashloc fnhashloc ) 
  3581. #else
  3582. zscanfndef ( fnhashloc ) 
  3583. hashloc fnhashloc ; 
  3584. #endif
  3585. {/* 25 10 */ typedef integer fndefloc  ; 
  3586.   hashptr2 singlfunction[singlefnspace + 1]  ; 
  3587.   fndefloc singleptr  ; 
  3588.   fndefloc copyptr  ; 
  3589.   bufpointer endofnum  ; 
  3590.   hashloc implfnloc  ; 
  3591.   {
  3592.     if ( ( ! eatbstwhitespace () ) ) 
  3593.     {
  3594.       eatbstprint () ; 
  3595.       {
  3596.     {
  3597.       (void) ReverseFPuts( logfile ,  "function" ) ; 
  3598.       (void) FPrintFStdErr(  "function" ) ; 
  3599.     } 
  3600.     {
  3601.       bsterrprintandlookfo () ; 
  3602.       goto lab10 ; 
  3603.     } 
  3604.       } 
  3605.     } 
  3606.   } 
  3607.   singleptr = 0 ; 
  3608.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  3609.       
  3610.     switch ( ( buffer [ bufptr2 ] ) ) 
  3611.     {case 35 : 
  3612.       {
  3613.     incr ( bufptr2 ) ; 
  3614.     if ( ( ! scaninteger () ) ) 
  3615.     {
  3616.       {
  3617.         (void) ReverseFPuts( logfile ,  "Illegal integer in integer literal" ) ; 
  3618.         (void) FPrintFStdErr(  "Illegal integer in integer literal" ) ; 
  3619.       } 
  3620.       skiptokenprint () ; 
  3621.       goto lab25 ; 
  3622.     } 
  3623.     ;
  3624. #ifdef TRACE
  3625.     {
  3626.       (void) FPutC( '#' , logfile );
  3627.     } 
  3628.     {
  3629.       outtoken ( logfile ) ; 
  3630.     } 
  3631.     {
  3632.       (void) FPrintF( logfile , "%s%ld\r",  " is an integer literal with value " ,           (long)tokenvalue ) ; 
  3633.     } 
  3634. #endif /* TRACE */
  3635.     literalloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 1 
  3636.     , true ) ; 
  3637.     if ( ( ! hashfound ) ) 
  3638.     {
  3639.       fntype [ literalloc ] = 2 ; 
  3640.       ilkinfo [ literalloc ] = tokenvalue ; 
  3641.     } 
  3642.     if ( ( ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( bufptr2 < last ) 
  3643.     && ( buffer [ bufptr2 ] != 125 ) && ( buffer [ bufptr2 ] != 37 ) ) ) 
  3644.     {
  3645.       skipillegalstuffafte () ; 
  3646.       goto lab25 ; 
  3647.     } 
  3648.     {
  3649.       singlfunction [ singleptr ] = literalloc ; 
  3650.       if ( ( singleptr == singlefnspace ) ) 
  3651.       singlfnoverflow () ; 
  3652.       incr ( singleptr ) ; 
  3653.     } 
  3654.       } 
  3655.       break ; 
  3656.     case 34 : 
  3657.       {
  3658.     incr ( bufptr2 ) ; 
  3659.     if ( ( ! scan1 ( 34 ) ) ) 
  3660.     {
  3661.       {
  3662.         (void) FPrintF( logfile , "%s%c%s",  "No `" , xchr [ 34 ] , "' to end string literal"             ) ; 
  3663.         (void) FPrintFStdErr( "%s%c%s",  "No `" , xchr [ 34 ] , "' to end string literal"             ) ; 
  3664.       } 
  3665.       skiptokenprint () ; 
  3666.       goto lab25 ; 
  3667.     } 
  3668.     ;
  3669. #ifdef TRACE
  3670.     {
  3671.       (void) FPutC( '"' , logfile );
  3672.     } 
  3673.     {
  3674.       outtoken ( logfile ) ; 
  3675.     } 
  3676.     {
  3677.       (void) FPutC( '"' , logfile );
  3678.     } 
  3679.     {
  3680.       (void) FPrintF( logfile , "%s\r",  " is a string literal" ) ; 
  3681.     } 
  3682. #endif /* TRACE */
  3683.     literalloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 0 
  3684.     , true ) ; 
  3685.     fntype [ literalloc ] = 3 ; 
  3686.     incr ( bufptr2 ) ; 
  3687.     if ( ( ( lexclass [ buffer [ bufptr2 ] ] != 1 ) && ( bufptr2 < last ) 
  3688.     && ( buffer [ bufptr2 ] != 125 ) && ( buffer [ bufptr2 ] != 37 ) ) ) 
  3689.     {
  3690.       skipillegalstuffafte () ; 
  3691.       goto lab25 ; 
  3692.     } 
  3693.     {
  3694.       singlfunction [ singleptr ] = literalloc ; 
  3695.       if ( ( singleptr == singlefnspace ) ) 
  3696.       singlfnoverflow () ; 
  3697.       incr ( singleptr ) ; 
  3698.     } 
  3699.       } 
  3700.       break ; 
  3701.     case 39 : 
  3702.       {
  3703.     incr ( bufptr2 ) ; 
  3704.     if ( ( scan2white ( 125 , 37 ) ) ) 
  3705.     ; 
  3706.     ;
  3707. #ifdef TRACE
  3708.     {
  3709.       (void) FPutC( '\'' , logfile );
  3710.     } 
  3711.     {
  3712.       outtoken ( logfile ) ; 
  3713.     } 
  3714.     {
  3715.       (void) ReverseFPuts( logfile ,  " is a quoted function " ) ; 
  3716.     } 
  3717. #endif /* TRACE */
  3718.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  3719.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  3720.     false ) ; 
  3721.     if ( ( ! hashfound ) ) 
  3722.     {
  3723.       skptokenunknownfunct () ; 
  3724.       goto lab25 ; 
  3725.     } 
  3726.     else {
  3727.         
  3728.       if ( ( fnloc == wizloc ) ) 
  3729.       {
  3730.         printrecursionillega () ; 
  3731.         goto lab25 ; 
  3732.       } 
  3733.       else {
  3734.           
  3735.     ;
  3736. #ifdef TRACE
  3737.         {
  3738.           (void) ReverseFPuts( logfile ,  "of type " ) ; 
  3739.         } 
  3740.         traceprfnclass ( fnloc ) ; 
  3741.         {
  3742.           (void) FPutC('\r', logfile );
  3743.         } 
  3744. #endif /* TRACE */
  3745.         {
  3746.           singlfunction [ singleptr ] = 0 ; 
  3747.           if ( ( singleptr == singlefnspace ) ) 
  3748.           singlfnoverflow () ; 
  3749.           incr ( singleptr ) ; 
  3750.         } 
  3751.         {
  3752.           singlfunction [ singleptr ] = fnloc ; 
  3753.           if ( ( singleptr == singlefnspace ) ) 
  3754.           singlfnoverflow () ; 
  3755.           incr ( singleptr ) ; 
  3756.         } 
  3757.       } 
  3758.     } 
  3759.       } 
  3760.       break ; 
  3761.     case 123 : 
  3762.       {
  3763.     exbuf [ 0 ] = 39 ; 
  3764.     inttoASCII ( implfnnum , exbuf , 1 , endofnum ) ; 
  3765.     implfnloc = strlookup ( exbuf , 0 , endofnum , 11 , true ) ; 
  3766.     if ( ( hashfound ) ) 
  3767.     {
  3768.       {
  3769.         (void) ReverseFPuts( logfile ,  "Already encountered implicit function" ) ; 
  3770.         (void) FPrintFStdErr(  "Already encountered implicit function" ) ; 
  3771.       } 
  3772.       printconfusion () ; 
  3773.       longjmp(jmp9998,1) ; 
  3774.     } 
  3775.     ;
  3776. #ifdef TRACE
  3777.     {
  3778.       outpoolstr ( logfile , hashtext [ implfnloc ] ) ; 
  3779.     } 
  3780.     {
  3781.       (void) FPrintF( logfile , "%s\r",  " is an implicit function" ) ; 
  3782.     } 
  3783. #endif /* TRACE */
  3784.     incr ( implfnnum ) ; 
  3785.     fntype [ implfnloc ] = 1 ; 
  3786.     {
  3787.       singlfunction [ singleptr ] = 0 ; 
  3788.       if ( ( singleptr == singlefnspace ) ) 
  3789.       singlfnoverflow () ; 
  3790.       incr ( singleptr ) ; 
  3791.     } 
  3792.     {
  3793.       singlfunction [ singleptr ] = implfnloc ; 
  3794.       if ( ( singleptr == singlefnspace ) ) 
  3795.       singlfnoverflow () ; 
  3796.       incr ( singleptr ) ; 
  3797.     } 
  3798.     incr ( bufptr2 ) ; 
  3799.     scanfndef ( implfnloc ) ; 
  3800.       } 
  3801.       break ; 
  3802.       default: 
  3803.       {
  3804.     if ( ( scan2white ( 125 , 37 ) ) ) 
  3805.     ; 
  3806.     ;
  3807. #ifdef TRACE
  3808.     {
  3809.       outtoken ( logfile ) ; 
  3810.     } 
  3811.     {
  3812.       (void) ReverseFPuts( logfile ,  " is a function " ) ; 
  3813.     } 
  3814. #endif /* TRACE */
  3815.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  3816.     fnloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 11 , 
  3817.     false ) ; 
  3818.     if ( ( ! hashfound ) ) 
  3819.     {
  3820.       skptokenunknownfunct () ; 
  3821.       goto lab25 ; 
  3822.     } 
  3823.     else if ( ( fnloc == wizloc ) ) 
  3824.     {
  3825.       printrecursionillega () ; 
  3826.       goto lab25 ; 
  3827.     } 
  3828.     else {
  3829.         
  3830.     ;
  3831. #ifdef TRACE
  3832.       {
  3833.         (void) ReverseFPuts( logfile ,  "of type " ) ; 
  3834.       } 
  3835.       traceprfnclass ( fnloc ) ; 
  3836.       {
  3837.         (void) FPutC('\r', logfile );
  3838.       } 
  3839. #endif /* TRACE */
  3840.       {
  3841.         singlfunction [ singleptr ] = fnloc ; 
  3842.         if ( ( singleptr == singlefnspace ) ) 
  3843.         singlfnoverflow () ; 
  3844.         incr ( singleptr ) ; 
  3845.       } 
  3846.     } 
  3847.       } 
  3848.       break ; 
  3849.     } 
  3850.     lab25: {
  3851.     
  3852.       if ( ( ! eatbstwhitespace () ) ) 
  3853.       {
  3854.     eatbstprint () ; 
  3855.     {
  3856.       {
  3857.         (void) ReverseFPuts( logfile ,  "function" ) ; 
  3858.         (void) FPrintFStdErr(  "function" ) ; 
  3859.       } 
  3860.       {
  3861.         bsterrprintandlookfo () ; 
  3862.         goto lab10 ; 
  3863.       } 
  3864.     } 
  3865.       } 
  3866.     } 
  3867.   } 
  3868.   {
  3869.     {
  3870.       singlfunction [ singleptr ] = 5001 ; 
  3871.       if ( ( singleptr == singlefnspace ) ) 
  3872.       singlfnoverflow () ; 
  3873.       incr ( singleptr ) ; 
  3874.     } 
  3875.     if ( ( singleptr + wizdefptr > wizfnspace ) ) 
  3876.     {
  3877.       {
  3878.     (void) FPrintF( logfile , "%ld%s",  (long)singleptr + wizdefptr , ": " ) ; 
  3879.     (void) FPrintFStdErr( "%ld%s",  (long)singleptr + wizdefptr , ": " ) ; 
  3880.       } 
  3881.       {
  3882.     printoverflow () ; 
  3883.     {
  3884.       (void) FPrintF( logfile , "%s%ld\r",  "wizard-defined function space " , (long)wizfnspace ) 
  3885.       ; 
  3886.       (void) FPrintFStdErr( "%s%ld\r",  "wizard-defined function space " , (long)wizfnspace ) ; 
  3887.     } 
  3888.     longjmp(jmp9998,1) ; 
  3889.       } 
  3890.     } 
  3891.     ilkinfo [ fnhashloc ] = wizdefptr ; 
  3892.     copyptr = 0 ; 
  3893.     while ( ( copyptr < singleptr ) ) {
  3894.     
  3895.       wizfunctions [ wizdefptr ] = singlfunction [ copyptr ] ; 
  3896.       incr ( copyptr ) ; 
  3897.       incr ( wizdefptr ) ; 
  3898.     } 
  3899.   } 
  3900.   incr ( bufptr2 ) ; 
  3901.   lab10: ; 
  3902. boolean eatbibwhitespace () {
  3903.     /* 10 */ register boolean Result; while ( ( ! 
  3904.   scanwhitespace () ) ) {
  3905.       
  3906.     if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) 
  3907.     {
  3908.       Result = false ; 
  3909.       goto lab10 ; 
  3910.     } 
  3911.     incr ( biblinenum ) ; 
  3912.     bufptr2 = 0 ; 
  3913.   } 
  3914.   Result = true ; 
  3915.   lab10: ; 
  3916.   return(Result) ; 
  3917. boolean compressbibwhite () {
  3918.     /* 10 */ register boolean Result; Result = false 
  3919.   ; 
  3920.   {
  3921.     if ( ( exbufptr == bufsize ) ) 
  3922.     {
  3923.       bibfieldtoolongprint () ; 
  3924.       goto lab10 ; 
  3925.     } 
  3926.     else {
  3927.     
  3928.       exbuf [ exbufptr ] = 32 ; 
  3929.       incr ( exbufptr ) ; 
  3930.     } 
  3931.   } 
  3932.   while ( ( ! scanwhitespace () ) ) {
  3933.       
  3934.     if ( ( ! inputln ( bibfile [ bibptr ] ) ) ) 
  3935.     {
  3936.       eatbibprint () ; 
  3937.       goto lab10 ; 
  3938.     } 
  3939.     incr ( biblinenum ) ; 
  3940.     bufptr2 = 0 ; 
  3941.   } 
  3942.   Result = true ; 
  3943.   lab10: ; 
  3944.   return(Result) ; 
  3945. boolean scanbalancedbraces () {
  3946.     /* 15 10 */ register boolean Result; Result = 
  3947.   false ; 
  3948.   incr ( bufptr2 ) ; 
  3949.   {
  3950.     if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last ) ) ) 
  3951.     if ( ( ! compressbibwhite () ) ) 
  3952.     goto lab10 ; 
  3953.   } 
  3954.   if ( ( exbufptr > 1 ) ) 
  3955.   if ( ( exbuf [ exbufptr - 1 ] == 32 ) ) 
  3956.   if ( ( exbuf [ exbufptr - 2 ] == 32 ) ) 
  3957.   decr ( exbufptr ) ; 
  3958.   bibbracelevel = 0 ; 
  3959.   if ( ( storefield ) ) 
  3960.   {
  3961.     while ( ( buffer [ bufptr2 ] != rightstrdelim ) ) switch ( ( buffer [ 
  3962.     bufptr2 ] ) ) 
  3963.     {case 123 : 
  3964.       {
  3965.     incr ( bibbracelevel ) ; 
  3966.     {
  3967.       if ( ( exbufptr == bufsize ) ) 
  3968.       {
  3969.         bibfieldtoolongprint () ; 
  3970.         goto lab10 ; 
  3971.       } 
  3972.       else {
  3973.           
  3974.         exbuf [ exbufptr ] = 123 ; 
  3975.         incr ( exbufptr ) ; 
  3976.       } 
  3977.     } 
  3978.     incr ( bufptr2 ) ; 
  3979.     {
  3980.       if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last 
  3981.       ) ) ) 
  3982.       if ( ( ! compressbibwhite () ) ) 
  3983.       goto lab10 ; 
  3984.     } 
  3985.     {
  3986.       while ( true ) switch ( ( buffer [ bufptr2 ] ) ) 
  3987.       {case 125 : 
  3988.         {
  3989.           decr ( bibbracelevel ) ; 
  3990.           {
  3991.         if ( ( exbufptr == bufsize ) ) 
  3992.         {
  3993.           bibfieldtoolongprint () ; 
  3994.           goto lab10 ; 
  3995.         } 
  3996.         else {
  3997.             
  3998.           exbuf [ exbufptr ] = 125 ; 
  3999.           incr ( exbufptr ) ; 
  4000.         } 
  4001.           } 
  4002.           incr ( bufptr2 ) ; 
  4003.           {
  4004.         if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 
  4005.         == last ) ) ) 
  4006.         if ( ( ! compressbibwhite () ) ) 
  4007.         goto lab10 ; 
  4008.           } 
  4009.           if ( ( bibbracelevel == 0 ) ) 
  4010.           goto lab15 ; 
  4011.         } 
  4012.         break ; 
  4013.       case 123 : 
  4014.         {
  4015.           incr ( bibbracelevel ) ; 
  4016.           {
  4017.         if ( ( exbufptr == bufsize ) ) 
  4018.         {
  4019.           bibfieldtoolongprint () ; 
  4020.           goto lab10 ; 
  4021.         } 
  4022.         else {
  4023.             
  4024.           exbuf [ exbufptr ] = 123 ; 
  4025.           incr ( exbufptr ) ; 
  4026.         } 
  4027.           } 
  4028.           incr ( bufptr2 ) ; 
  4029.           {
  4030.         if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 
  4031.         == last ) ) ) 
  4032.         if ( ( ! compressbibwhite () ) ) 
  4033.         goto lab10 ; 
  4034.           } 
  4035.         } 
  4036.         break ; 
  4037.         default: 
  4038.         {
  4039.           {
  4040.         if ( ( exbufptr == bufsize ) ) 
  4041.         {
  4042.           bibfieldtoolongprint () ; 
  4043.           goto lab10 ; 
  4044.         } 
  4045.         else {
  4046.             
  4047.           exbuf [ exbufptr ] = buffer [ bufptr2 ] ; 
  4048.           incr ( exbufptr ) ; 
  4049.         } 
  4050.           } 
  4051.           incr ( bufptr2 ) ; 
  4052.           {
  4053.         if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 
  4054.         == last ) ) ) 
  4055.         if ( ( ! compressbibwhite () ) ) 
  4056.         goto lab10 ; 
  4057.           } 
  4058.         } 
  4059.         break ; 
  4060.       } 
  4061.       lab15: ; 
  4062.     } 
  4063.       } 
  4064.       break ; 
  4065.     case 125 : 
  4066.       {
  4067.     bibunbalancedbracesp () ; 
  4068.     goto lab10 ; 
  4069.       } 
  4070.       break ; 
  4071.       default: 
  4072.       {
  4073.     {
  4074.       if ( ( exbufptr == bufsize ) ) 
  4075.       {
  4076.         bibfieldtoolongprint () ; 
  4077.         goto lab10 ; 
  4078.       } 
  4079.       else {
  4080.           
  4081.         exbuf [ exbufptr ] = buffer [ bufptr2 ] ; 
  4082.         incr ( exbufptr ) ; 
  4083.       } 
  4084.     } 
  4085.     incr ( bufptr2 ) ; 
  4086.     {
  4087.       if ( ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) || ( bufptr2 == last 
  4088.       ) ) ) 
  4089.       if ( ( ! compressbibwhite () ) ) 
  4090.       goto lab10 ; 
  4091.     } 
  4092.       } 
  4093.       break ; 
  4094.     } 
  4095.   } 
  4096.   else {
  4097.       
  4098.     while ( ( buffer [ bufptr2 ] != rightstrdelim ) ) if ( ( buffer [ bufptr2 
  4099.     ] == 123 ) ) 
  4100.     {
  4101.       incr ( bibbracelevel ) ; 
  4102.       incr ( bufptr2 ) ; 
  4103.       {
  4104.     if ( ( ! eatbibwhitespace () ) ) 
  4105.     {
  4106.       eatbibprint () ; 
  4107.       goto lab10 ; 
  4108.     } 
  4109.       } 
  4110.       while ( ( bibbracelevel > 0 ) ) {
  4111.       
  4112.     if ( ( buffer [ bufptr2 ] == 125 ) ) 
  4113.     {
  4114.       decr ( bibbracelevel ) ; 
  4115.       incr ( bufptr2 ) ; 
  4116.       {
  4117.         if ( ( ! eatbibwhitespace () ) ) 
  4118.         {
  4119.           eatbibprint () ; 
  4120.           goto lab10 ; 
  4121.         } 
  4122.       } 
  4123.     } 
  4124.     else if ( ( buffer [ bufptr2 ] == 123 ) ) 
  4125.     {
  4126.       incr ( bibbracelevel ) ; 
  4127.       incr ( bufptr2 ) ; 
  4128.       {
  4129.         if ( ( ! eatbibwhitespace () ) ) 
  4130.         {
  4131.           eatbibprint () ; 
  4132.           goto lab10 ; 
  4133.         } 
  4134.       } 
  4135.     } 
  4136.     else {
  4137.         
  4138.       incr ( bufptr2 ) ; 
  4139.       if ( ( ! scan2 ( 125 , 123 ) ) ) 
  4140.       {
  4141.         if ( ( ! eatbibwhitespace () ) ) 
  4142.         {
  4143.           eatbibprint () ; 
  4144.           goto lab10 ; 
  4145.         } 
  4146.       } 
  4147.     } 
  4148.       } 
  4149.     } 
  4150.     else if ( ( buffer [ bufptr2 ] == 125 ) ) 
  4151.     {
  4152.       bibunbalancedbracesp () ; 
  4153.       goto lab10 ; 
  4154.     } 
  4155.     else {
  4156.     
  4157.       incr ( bufptr2 ) ; 
  4158.       if ( ( ! scan3 ( rightstrdelim , 123 , 125 ) ) ) 
  4159.       {
  4160.     if ( ( ! eatbibwhitespace () ) ) 
  4161.     {
  4162.       eatbibprint () ; 
  4163.       goto lab10 ; 
  4164.     } 
  4165.       } 
  4166.     } 
  4167.   } 
  4168.   incr ( bufptr2 ) ; 
  4169.   Result = true ; 
  4170.   lab10: ; 
  4171.   return(Result) ; 
  4172. boolean scanafieldtokenandea () {
  4173.     /* 10 */ register boolean Result; Result = 
  4174.   false ; 
  4175.   switch ( ( buffer [ bufptr2 ] ) ) 
  4176.   {case 123 : 
  4177.     {
  4178.       rightstrdelim = 125 ; 
  4179.       if ( ( ! scanbalancedbraces () ) ) 
  4180.       goto lab10 ; 
  4181.     } 
  4182.     break ; 
  4183.   case 34 : 
  4184.     {
  4185.       rightstrdelim = 34 ; 
  4186.       if ( ( ! scanbalancedbraces () ) ) 
  4187.       goto lab10 ; 
  4188.     } 
  4189.     break ; 
  4190.   case 48 : 
  4191.   case 49 : 
  4192.   case 50 : 
  4193.   case 51 : 
  4194.   case 52 : 
  4195.   case 53 : 
  4196.   case 54 : 
  4197.   case 55 : 
  4198.   case 56 : 
  4199.   case 57 : 
  4200.     {
  4201.       if ( ( ! scannonneginteger () ) ) 
  4202.       {
  4203.     {
  4204.       (void) ReverseFPuts( logfile ,  "A digit disappeared" ) ; 
  4205.       (void) FPrintFStdErr(  "A digit disappeared" ) ; 
  4206.     } 
  4207.     printconfusion () ; 
  4208.     longjmp(jmp9998,1) ; 
  4209.       } 
  4210.       if ( ( storefield ) ) 
  4211.       {
  4212.     tmpptr = bufptr1 ; 
  4213.     while ( ( tmpptr < bufptr2 ) ) {
  4214.         
  4215.       {
  4216.         if ( ( exbufptr == bufsize ) ) 
  4217.         {
  4218.           bibfieldtoolongprint () ; 
  4219.           goto lab10 ; 
  4220.         } 
  4221.         else {
  4222.         
  4223.           exbuf [ exbufptr ] = buffer [ tmpptr ] ; 
  4224.           incr ( exbufptr ) ; 
  4225.         } 
  4226.       } 
  4227.       incr ( tmpptr ) ; 
  4228.     } 
  4229.       } 
  4230.     } 
  4231.     break ; 
  4232.     default: 
  4233.     {
  4234.       scanidentifier ( 44 , rightouterdelim , 35 ) ; 
  4235.       {
  4236.     if ( ( ( scanresult == 3 ) || ( scanresult == 1 ) ) ) 
  4237.     ; 
  4238.     else {
  4239.         
  4240.       bibidprint () ; 
  4241.       {
  4242.         {
  4243.           (void) ReverseFPuts( logfile ,  "a field part" ) ; 
  4244.           (void) FPrintFStdErr(  "a field part" ) ; 
  4245.         } 
  4246.         biberrprint () ; 
  4247.         goto lab10 ; 
  4248.       } 
  4249.     } 
  4250.       } 
  4251.       if ( ( storefield ) ) 
  4252.       {
  4253.     lowercase ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  4254.     macronameloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 
  4255.     13 , false ) ; 
  4256.     storetoken = true ; 
  4257.     if ( ( atbibcommand ) ) 
  4258.     if ( ( commandnum == 2 ) ) 
  4259.     if ( ( macronameloc == curmacroloc ) ) 
  4260.     {
  4261.       storetoken = false ; 
  4262.       {
  4263.         macrowarnprint () ; 
  4264.         {
  4265.           {
  4266.         (void) FPrintF( logfile , "%s\r",  "used in its own definition" ) ; 
  4267.         (void) FPrintFStdErr( "%s\r",  "used in its own definition" ) ; 
  4268.           } 
  4269.           bibwarnprint () ; 
  4270.         } 
  4271.       } 
  4272.     } 
  4273.     if ( ( ! hashfound ) ) 
  4274.     {
  4275.       storetoken = false ; 
  4276.       {
  4277.         macrowarnprint () ; 
  4278.         {
  4279.           {
  4280.         (void) FPrintF( logfile , "%s\r",  "undefined" ) ; 
  4281.         (void) FPrintFStdErr( "%s\r",  "undefined" ) ; 
  4282.           } 
  4283.           bibwarnprint () ; 
  4284.         } 
  4285.       } 
  4286.     } 
  4287.     if ( ( storetoken ) ) 
  4288.     {
  4289.       tmpptr = strstart [ ilkinfo [ macronameloc ] ] ; 
  4290.       tmpendptr = strstart [ ilkinfo [ macronameloc ] + 1 ] ; 
  4291.       if ( ( exbufptr == 0 ) ) 
  4292.       if ( ( ( lexclass [ strpool [ tmpptr ] ] == 1 ) && ( tmpptr < 
  4293.       tmpendptr ) ) ) 
  4294.       {
  4295.         {
  4296.           if ( ( exbufptr == bufsize ) ) 
  4297.           {
  4298.         bibfieldtoolongprint () ; 
  4299.         goto lab10 ; 
  4300.           } 
  4301.           else {
  4302.           
  4303.         exbuf [ exbufptr ] = 32 ; 
  4304.         incr ( exbufptr ) ; 
  4305.           } 
  4306.         } 
  4307.         incr ( tmpptr ) ; 
  4308.         while ( ( ( lexclass [ strpool [ tmpptr ] ] == 1 ) && ( tmpptr < 
  4309.         tmpendptr ) ) ) incr ( tmpptr ) ; 
  4310.       } 
  4311.       while ( ( tmpptr < tmpendptr ) ) {
  4312.           
  4313.         if ( ( lexclass [ strpool [ tmpptr ] ] != 1 ) ) 
  4314.         {
  4315.           if ( ( exbufptr == bufsize ) ) 
  4316.           {
  4317.         bibfieldtoolongprint () ; 
  4318.         goto lab10 ; 
  4319.           } 
  4320.           else {
  4321.           
  4322.         exbuf [ exbufptr ] = strpool [ tmpptr ] ; 
  4323.         incr ( exbufptr ) ; 
  4324.           } 
  4325.         } 
  4326.         else if ( ( exbuf [ exbufptr - 1 ] != 32 ) ) 
  4327.         {
  4328.           if ( ( exbufptr == bufsize ) ) 
  4329.           {
  4330.         bibfieldtoolongprint () ; 
  4331.         goto lab10 ; 
  4332.           } 
  4333.           else {
  4334.           
  4335.         exbuf [ exbufptr ] = 32 ; 
  4336.         incr ( exbufptr ) ; 
  4337.           } 
  4338.         } 
  4339.         incr ( tmpptr ) ; 
  4340.       } 
  4341.     } 
  4342.       } 
  4343.     } 
  4344.     break ; 
  4345.   } 
  4346.   {
  4347.     if ( ( ! eatbibwhitespace () ) ) 
  4348.     {
  4349.       eatbibprint () ; 
  4350.       goto lab10 ; 
  4351.     } 
  4352.   } 
  4353.   Result = true ; 
  4354.   lab10: ; 
  4355.   return(Result) ; 
  4356. #include "BibTeX.h"
  4357.  
  4358. #include "BibTeX.p"
  4359. #include "globals.h"
  4360. #include "coerce.h"
  4361.  
  4362. boolean scanandstorethefield () {
  4363.     /* 10 */ register boolean Result; Result = 
  4364.   false ; 
  4365.   exbufptr = 0 ; 
  4366.   if ( ( ! scanafieldtokenandea () ) ) 
  4367.   goto lab10 ; 
  4368.   while ( ( buffer [ bufptr2 ] == 35 ) ) {
  4369.       
  4370.     incr ( bufptr2 ) ; 
  4371.     {
  4372.       if ( ( ! eatbibwhitespace () ) ) 
  4373.       {
  4374.     eatbibprint () ; 
  4375.     goto lab10 ; 
  4376.       } 
  4377.     } 
  4378.     if ( ( ! scanafieldtokenandea () ) ) 
  4379.     goto lab10 ; 
  4380.   } 
  4381.   if ( ( storefield ) ) 
  4382.   {
  4383.     if ( ( ! atbibcommand ) ) 
  4384.     if ( ( exbufptr > 0 ) ) 
  4385.     if ( ( exbuf [ exbufptr - 1 ] == 32 ) ) 
  4386.     decr ( exbufptr ) ; 
  4387.     if ( ( ( ! atbibcommand ) && ( exbuf [ 0 ] == 32 ) && ( exbufptr > 0 ) ) ) 
  4388.     exbufxptr = 1 ; 
  4389.     else exbufxptr = 0 ; 
  4390.     fieldvalloc = strlookup ( exbuf , exbufxptr , exbufptr - exbufxptr , 0 , 
  4391.     true ) ; 
  4392.     fntype [ fieldvalloc ] = 3 ; 
  4393.     ;
  4394. #ifdef TRACE
  4395.     {
  4396.       (void) FPutC( '"' , logfile );
  4397.     } 
  4398.     {
  4399.       outpoolstr ( logfile , hashtext [ fieldvalloc ] ) ; 
  4400.     } 
  4401.     {
  4402.       (void) FPrintF( logfile , "%s\r",  "\" is a field value" ) ; 
  4403.     } 
  4404. #endif /* TRACE */
  4405.     if ( ( atbibcommand ) ) 
  4406.     {
  4407.       switch ( ( commandnum ) ) 
  4408.       {case 1 : 
  4409.     {
  4410.       spreamble [ preambleptr ] = hashtext [ fieldvalloc ] ; 
  4411.       incr ( preambleptr ) ; 
  4412.     } 
  4413.     break ; 
  4414.       case 2 : 
  4415.     ilkinfo [ curmacroloc ] = hashtext [ fieldvalloc ] ; 
  4416.     break ; 
  4417.     default: 
  4418.     bibcmdconfusion () ; 
  4419.     break ; 
  4420.       } 
  4421.     } 
  4422.     else {
  4423.     
  4424.       fieldptr = entryciteptr * numfields + ilkinfo [ fieldnameloc ] ; 
  4425.       if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  4426.       {
  4427.     {
  4428.       (void) ReverseFPuts( logfile ,  "Warning--I'm ignoring " ) ; 
  4429.       (void) FPrintFStdErr(  "Warning--I'm ignoring " ) ; 
  4430.     } 
  4431.     printapoolstr ( citelist [ entryciteptr ] ) ; 
  4432.     {
  4433.       (void) ReverseFPuts( logfile ,  "'s extra \"" ) ; 
  4434.       (void) FPrintFStdErr(  "'s extra \"" ) ; 
  4435.     } 
  4436.     printapoolstr ( hashtext [ fieldnameloc ] ) ; 
  4437.     {
  4438.       {
  4439.         (void) FPrintF( logfile , "%s\r",  "\" field" ) ; 
  4440.         (void) FPrintFStdErr( "%s\r",  "\" field" ) ; 
  4441.       } 
  4442.       bibwarnprint () ; 
  4443.     } 
  4444.       } 
  4445.       else {
  4446.       
  4447.     fieldinfo [ fieldptr ] = hashtext [ fieldvalloc ] ; 
  4448.     if ( ( ( ilkinfo [ fieldnameloc ] == crossrefnum ) && ( ! allentries ) 
  4449.     ) ) 
  4450.     {
  4451.       tmpptr = exbufxptr ; 
  4452.       while ( ( tmpptr < exbufptr ) ) {
  4453.           
  4454.         outbuf [ tmpptr ] = exbuf [ tmpptr ] ; 
  4455.         incr ( tmpptr ) ; 
  4456.       } 
  4457.       lowercase ( outbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  4458.       lcciteloc = strlookup ( outbuf , exbufxptr , exbufptr - exbufxptr , 
  4459.       10 , true ) ; 
  4460.       if ( ( hashfound ) ) 
  4461.       {
  4462.         citeloc = ilkinfo [ lcciteloc ] ; 
  4463.         if ( ( ilkinfo [ citeloc ] >= oldnumcites ) ) 
  4464.         incr ( citeinfo [ ilkinfo [ citeloc ] ] ) ; 
  4465.       } 
  4466.       else {
  4467.           
  4468.         citeloc = strlookup ( exbuf , exbufxptr , exbufptr - exbufxptr , 9 
  4469.         , true ) ; 
  4470.         if ( ( hashfound ) ) 
  4471.         hashciteconfusion () ; 
  4472.         adddatabasecite ( citeptr ) ; 
  4473.         citeinfo [ ilkinfo [ citeloc ] ] = 1 ; 
  4474.       } 
  4475.     } 
  4476.       } 
  4477.     } 
  4478.   } 
  4479.   Result = true ; 
  4480.   lab10: ; 
  4481.   return(Result) ; 
  4482. void
  4483. #ifdef STDC
  4484. zdecrbracelevel (strnumber poplitvar ) 
  4485. #else
  4486. zdecrbracelevel ( poplitvar ) 
  4487. strnumber poplitvar ; 
  4488. #endif
  4489. {if ( ( bracelevel == 0 ) ) 
  4490.   bracesunbalancedcomp ( poplitvar ) ; 
  4491.   else decr ( bracelevel ) ; 
  4492. void
  4493. #ifdef STDC
  4494. zcheckbracelevel (strnumber poplitvar ) 
  4495. #else
  4496. zcheckbracelevel ( poplitvar ) 
  4497. strnumber poplitvar ; 
  4498. #endif
  4499. {if ( ( bracelevel > 0 ) ) 
  4500.   bracesunbalancedcomp ( poplitvar ) ; 
  4501. void
  4502. #ifdef STDC
  4503. znamescanforand (strnumber poplitvar ) 
  4504. #else
  4505. znamescanforand ( poplitvar ) 
  4506. strnumber poplitvar ; 
  4507. #endif
  4508. {bracelevel = 0 ; 
  4509.   precedingwhite = false ; 
  4510.   andfound = false ; 
  4511.   while ( ( ( ! andfound ) && ( exbufptr < exbuflength ) ) ) switch ( ( exbuf 
  4512.   [ exbufptr ] ) ) 
  4513.   {case 97 : 
  4514.   case 65 : 
  4515.     {
  4516.       incr ( exbufptr ) ; 
  4517.       if ( ( precedingwhite ) ) 
  4518.       {
  4519.     if ( ( exbufptr <= ( exbuflength - 3 ) ) ) 
  4520.     if ( ( ( exbuf [ exbufptr ] == 110 ) || ( exbuf [ exbufptr ] == 78 ) ) 
  4521.     ) 
  4522.     if ( ( ( exbuf [ exbufptr + 1 ] == 100 ) || ( exbuf [ exbufptr + 1 ] 
  4523.     == 68 ) ) ) 
  4524.     if ( ( lexclass [ exbuf [ exbufptr + 2 ] ] == 1 ) ) 
  4525.     {
  4526.       exbufptr = exbufptr + 2 ; 
  4527.       andfound = true ; 
  4528.     } 
  4529.       } 
  4530.       precedingwhite = false ; 
  4531.     } 
  4532.     break ; 
  4533.   case 123 : 
  4534.     {
  4535.       incr ( bracelevel ) ; 
  4536.       incr ( exbufptr ) ; 
  4537.       while ( ( ( bracelevel > 0 ) && ( exbufptr < exbuflength ) ) ) {
  4538.       
  4539.     if ( ( exbuf [ exbufptr ] == 125 ) ) 
  4540.     decr ( bracelevel ) ; 
  4541.     else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  4542.     incr ( bracelevel ) ; 
  4543.     incr ( exbufptr ) ; 
  4544.       } 
  4545.       precedingwhite = false ; 
  4546.     } 
  4547.     break ; 
  4548.   case 125 : 
  4549.     {
  4550.       decrbracelevel ( poplitvar ) ; 
  4551.       incr ( exbufptr ) ; 
  4552.       precedingwhite = false ; 
  4553.     } 
  4554.     break ; 
  4555.     default: 
  4556.     if ( ( lexclass [ exbuf [ exbufptr ] ] == 1 ) ) 
  4557.     {
  4558.       incr ( exbufptr ) ; 
  4559.       precedingwhite = true ; 
  4560.     } 
  4561.     else {
  4562.     
  4563.       incr ( exbufptr ) ; 
  4564.       precedingwhite = false ; 
  4565.     } 
  4566.     break ; 
  4567.   } 
  4568.   checkbracelevel ( poplitvar ) ; 
  4569. boolean vontokenfound () {
  4570.     /* 10 */ register boolean Result; nmbracelevel = 0 
  4571.   ; 
  4572.   Result = false ; 
  4573.   while ( ( namebfptr < namebfxptr ) ) if ( ( ( svbuffer [ namebfptr ] >= 65 ) 
  4574.   && ( svbuffer [ namebfptr ] <= 90 ) ) ) 
  4575.   goto lab10 ; 
  4576.   else if ( ( ( svbuffer [ namebfptr ] >= 97 ) && ( svbuffer [ namebfptr ] <= 
  4577.   122 ) ) ) 
  4578.   {
  4579.     Result = true ; 
  4580.     goto lab10 ; 
  4581.   } 
  4582.   else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  4583.   {
  4584.     incr ( nmbracelevel ) ; 
  4585.     incr ( namebfptr ) ; 
  4586.     if ( ( ( namebfptr + 2 < namebfxptr ) && ( svbuffer [ namebfptr ] == 92 ) 
  4587.     ) ) 
  4588.     {
  4589.       incr ( namebfptr ) ; 
  4590.       namebfyptr = namebfptr ; 
  4591.       while ( ( ( namebfptr < namebfxptr ) && ( lexclass [ svbuffer [ 
  4592.       namebfptr ] ] == 2 ) ) ) incr ( namebfptr ) ; 
  4593.       controlseqloc = strlookup ( svbuffer , namebfyptr , namebfptr - 
  4594.       namebfyptr , 14 , false ) ; 
  4595.       if ( ( hashfound ) ) 
  4596.       {
  4597.     switch ( ( ilkinfo [ controlseqloc ] ) ) 
  4598.     {case 3 : 
  4599.     case 5 : 
  4600.     case 7 : 
  4601.     case 9 : 
  4602.     case 11 : 
  4603.       goto lab10 ; 
  4604.       break ; 
  4605.     case 0 : 
  4606.     case 1 : 
  4607.     case 2 : 
  4608.     case 4 : 
  4609.     case 6 : 
  4610.     case 8 : 
  4611.     case 10 : 
  4612.     case 12 : 
  4613.       {
  4614.         Result = true ; 
  4615.         goto lab10 ; 
  4616.       } 
  4617.       break ; 
  4618.       default: 
  4619.       {
  4620.         {
  4621.           (void) ReverseFPuts( logfile ,  "Control-sequence hash error" ) ; 
  4622.           (void) FPrintFStdErr(  "Control-sequence hash error" ) ; 
  4623.         } 
  4624.         printconfusion () ; 
  4625.         longjmp(jmp9998,1) ; 
  4626.       } 
  4627.       break ; 
  4628.     } 
  4629.       } 
  4630.       while ( ( ( namebfptr < namebfxptr ) && ( nmbracelevel > 0 ) ) ) {
  4631.       
  4632.     if ( ( ( svbuffer [ namebfptr ] >= 65 ) && ( svbuffer [ namebfptr ] <= 
  4633.     90 ) ) ) 
  4634.     goto lab10 ; 
  4635.     else if ( ( ( svbuffer [ namebfptr ] >= 97 ) && ( svbuffer [ namebfptr 
  4636.     ] <= 122 ) ) ) 
  4637.     {
  4638.       Result = true ; 
  4639.       goto lab10 ; 
  4640.     } 
  4641.     else if ( ( svbuffer [ namebfptr ] == 125 ) ) 
  4642.     decr ( nmbracelevel ) ; 
  4643.     else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  4644.     incr ( nmbracelevel ) ; 
  4645.     incr ( namebfptr ) ; 
  4646.       } 
  4647.       goto lab10 ; 
  4648.     } 
  4649.     else while ( ( ( nmbracelevel > 0 ) && ( namebfptr < namebfxptr ) ) ) {
  4650.     
  4651.       if ( ( svbuffer [ namebfptr ] == 125 ) ) 
  4652.       decr ( nmbracelevel ) ; 
  4653.       else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  4654.       incr ( nmbracelevel ) ; 
  4655.       incr ( namebfptr ) ; 
  4656.     } 
  4657.   } 
  4658.   else incr ( namebfptr ) ; 
  4659.   lab10: ; 
  4660.   return(Result) ; 
  4661. void vonnameendsandlastna (void) {
  4662.     /* 10 */ vonend = lastend - 1 ; 
  4663.   while ( ( vonend > vonstart ) ) {
  4664.       
  4665.     namebfptr = nametok [ vonend - 1 ] ; 
  4666.     namebfxptr = nametok [ vonend ] ; 
  4667.     if ( ( vontokenfound () ) ) 
  4668.     goto lab10 ; 
  4669.     decr ( vonend ) ; 
  4670.   } 
  4671.   lab10: ; 
  4672. void skipstuffatspbracele (void) {
  4673.     while ( ( ( spbracelevel > 1 ) && ( spptr < spend ) 
  4674.   ) ) {
  4675.       
  4676.     if ( ( strpool [ spptr ] == 125 ) ) 
  4677.     decr ( spbracelevel ) ; 
  4678.     else if ( ( strpool [ spptr ] == 123 ) ) 
  4679.     incr ( spbracelevel ) ; 
  4680.     incr ( spptr ) ; 
  4681.   } 
  4682. void bracelvlonelettersco (void) {
  4683.     { 
  4684.     (void) ReverseFPuts( logfile ,  "The format string \"" ) ; 
  4685.     (void) FPrintFStdErr(  "The format string \"" ) ; 
  4686.   } 
  4687.   printapoolstr ( poplit1 ) ; 
  4688.   {
  4689.     {
  4690.       (void) ReverseFPuts( logfile ,  "\" has an illegal brace-level-1 letter" ) ; 
  4691.       (void) FPrintFStdErr(  "\" has an illegal brace-level-1 letter" ) ; 
  4692.     } 
  4693.     bstexwarnprint () ; 
  4694.   } 
  4695. #ifdef STDC
  4696. boolean zenoughtextchars (bufpointer enoughchars ) 
  4697. #else
  4698. boolean zenoughtextchars ( enoughchars ) 
  4699. bufpointer enoughchars ; 
  4700. #endif
  4701. {register boolean Result; numtextchars = 0 ; 
  4702.   exbufyptr = exbufxptr ; 
  4703.   while ( ( ( exbufyptr < exbufptr ) && ( numtextchars < enoughchars ) ) ) {
  4704.       
  4705.     incr ( exbufyptr ) ; 
  4706.     if ( ( exbuf [ exbufyptr - 1 ] == 123 ) ) 
  4707.     {
  4708.       incr ( bracelevel ) ; 
  4709.       if ( ( ( bracelevel == 1 ) && ( exbufyptr < exbufptr ) ) ) 
  4710.       if ( ( exbuf [ exbufyptr ] == 92 ) ) 
  4711.       {
  4712.     incr ( exbufyptr ) ; 
  4713.     while ( ( ( exbufyptr < exbufptr ) && ( bracelevel > 0 ) ) ) {
  4714.         
  4715.       if ( ( exbuf [ exbufyptr ] == 125 ) ) 
  4716.       decr ( bracelevel ) ; 
  4717.       else if ( ( exbuf [ exbufyptr ] == 123 ) ) 
  4718.       incr ( bracelevel ) ; 
  4719.       incr ( exbufyptr ) ; 
  4720.     } 
  4721.       } 
  4722.     } 
  4723.     else if ( ( exbuf [ exbufyptr - 1 ] == 125 ) ) 
  4724.     decr ( bracelevel ) ; 
  4725.     incr ( numtextchars ) ; 
  4726.   } 
  4727.   if ( ( numtextchars < enoughchars ) ) 
  4728.   Result = false ; 
  4729.   else Result = true ; 
  4730.   return(Result) ; 
  4731. void figureouttheformatte (void) {
  4732.     /* 15 */ { 
  4733.     exbufptr = 0 ; 
  4734.     spbracelevel = 0 ; 
  4735.     spptr = strstart [ poplit1 ] ; 
  4736.     spend = strstart [ poplit1 + 1 ] ; 
  4737.     while ( ( spptr < spend ) ) if ( ( strpool [ spptr ] == 123 ) ) 
  4738.     {
  4739.       incr ( spbracelevel ) ; 
  4740.       incr ( spptr ) ; 
  4741.       {
  4742.     spxptr1 = spptr ; 
  4743.     alphafound = false ; 
  4744.     doubleletter = false ; 
  4745.     endofgroup = false ; 
  4746.     tobewritten = true ; 
  4747.     while ( ( ( ! endofgroup ) && ( spptr < spend ) ) ) if ( ( lexclass [ 
  4748.     strpool [ spptr ] ] == 2 ) ) 
  4749.     {
  4750.       incr ( spptr ) ; 
  4751.       {
  4752.         if ( ( alphafound ) ) 
  4753.         {
  4754.           bracelvlonelettersco () ; 
  4755.           tobewritten = false ; 
  4756.         } 
  4757.         else {
  4758.         
  4759.           switch ( ( strpool [ spptr - 1 ] ) ) 
  4760.           {case 102 : 
  4761.           case 70 : 
  4762.         {
  4763.           curtoken = firststart ; 
  4764.           lasttoken = firstend ; 
  4765.           if ( ( curtoken == lasttoken ) ) 
  4766.           tobewritten = false ; 
  4767.           if ( ( ( strpool [ spptr ] == 102 ) || ( strpool [ spptr ] 
  4768.           == 70 ) ) ) 
  4769.           doubleletter = true ; 
  4770.         } 
  4771.         break ; 
  4772.           case 118 : 
  4773.           case 86 : 
  4774.         {
  4775.           curtoken = vonstart ; 
  4776.           lasttoken = vonend ; 
  4777.           if ( ( curtoken == lasttoken ) ) 
  4778.           tobewritten = false ; 
  4779.           if ( ( ( strpool [ spptr ] == 118 ) || ( strpool [ spptr ] 
  4780.           == 86 ) ) ) 
  4781.           doubleletter = true ; 
  4782.         } 
  4783.         break ; 
  4784.           case 108 : 
  4785.           case 76 : 
  4786.         {
  4787.           curtoken = vonend ; 
  4788.           lasttoken = lastend ; 
  4789.           if ( ( curtoken == lasttoken ) ) 
  4790.           tobewritten = false ; 
  4791.           if ( ( ( strpool [ spptr ] == 108 ) || ( strpool [ spptr ] 
  4792.           == 76 ) ) ) 
  4793.           doubleletter = true ; 
  4794.         } 
  4795.         break ; 
  4796.           case 106 : 
  4797.           case 74 : 
  4798.         {
  4799.           curtoken = lastend ; 
  4800.           lasttoken = jrend ; 
  4801.           if ( ( curtoken == lasttoken ) ) 
  4802.           tobewritten = false ; 
  4803.           if ( ( ( strpool [ spptr ] == 106 ) || ( strpool [ spptr ] 
  4804.           == 74 ) ) ) 
  4805.           doubleletter = true ; 
  4806.         } 
  4807.         break ; 
  4808.         default: 
  4809.         {
  4810.           bracelvlonelettersco () ; 
  4811.           tobewritten = false ; 
  4812.         } 
  4813.         break ; 
  4814.           } 
  4815.           if ( ( doubleletter ) ) 
  4816.           incr ( spptr ) ; 
  4817.         } 
  4818.         alphafound = true ; 
  4819.       } 
  4820.     } 
  4821.     else if ( ( strpool [ spptr ] == 125 ) ) 
  4822.     {
  4823.       decr ( spbracelevel ) ; 
  4824.       incr ( spptr ) ; 
  4825.       endofgroup = true ; 
  4826.     } 
  4827.     else if ( ( strpool [ spptr ] == 123 ) ) 
  4828.     {
  4829.       incr ( spbracelevel ) ; 
  4830.       incr ( spptr ) ; 
  4831.       skipstuffatspbracele () ; 
  4832.     } 
  4833.     else incr ( spptr ) ; 
  4834.     if ( ( ( endofgroup ) && ( tobewritten ) ) ) 
  4835.     {
  4836.       exbufxptr = exbufptr ; 
  4837.       spptr = spxptr1 ; 
  4838.       spbracelevel = 1 ; 
  4839.       while ( ( spbracelevel > 0 ) ) if ( ( ( lexclass [ strpool [ spptr ] 
  4840.       ] == 2 ) && ( spbracelevel == 1 ) ) ) 
  4841.       {
  4842.         incr ( spptr ) ; 
  4843.         {
  4844.           if ( ( doubleletter ) ) 
  4845.           incr ( spptr ) ; 
  4846.           usedefault = true ; 
  4847.           spxptr2 = spptr ; 
  4848.           if ( ( strpool [ spptr ] == 123 ) ) 
  4849.           {
  4850.         usedefault = false ; 
  4851.         incr ( spbracelevel ) ; 
  4852.         incr ( spptr ) ; 
  4853.         spxptr1 = spptr ; 
  4854.         skipstuffatspbracele () ; 
  4855.         spxptr2 = spptr - 1 ; 
  4856.           } 
  4857.           while ( ( curtoken < lasttoken ) ) {
  4858.           
  4859.         if ( ( doubleletter ) ) 
  4860.         {
  4861.           namebfptr = nametok [ curtoken ] ; 
  4862.           namebfxptr = nametok [ curtoken + 1 ] ; 
  4863.           if ( ( exbuflength + ( namebfxptr - namebfptr ) > bufsize ) 
  4864.           ) 
  4865.           bufferoverflow () ; 
  4866.           while ( ( namebfptr < namebfxptr ) ) {
  4867.               
  4868.             {
  4869.               exbuf [ exbufptr ] = svbuffer [ namebfptr ] ; 
  4870.               incr ( exbufptr ) ; 
  4871.             } 
  4872.             incr ( namebfptr ) ; 
  4873.           } 
  4874.         } 
  4875.         else {
  4876.             
  4877.           namebfptr = nametok [ curtoken ] ; 
  4878.           namebfxptr = nametok [ curtoken + 1 ] ; 
  4879.           while ( ( namebfptr < namebfxptr ) ) {
  4880.               
  4881.             if ( ( lexclass [ svbuffer [ namebfptr ] ] == 2 ) ) 
  4882.             {
  4883.               {
  4884.             if ( ( exbufptr == bufsize ) ) 
  4885.             bufferoverflow () ; 
  4886.             {
  4887.               exbuf [ exbufptr ] = svbuffer [ namebfptr ] ; 
  4888.               incr ( exbufptr ) ; 
  4889.             } 
  4890.               } 
  4891.               goto lab15 ; 
  4892.             } 
  4893.             else if ( ( ( svbuffer [ namebfptr ] == 123 ) && ( 
  4894.             namebfptr + 1 < namebfxptr ) ) ) 
  4895.             if ( ( svbuffer [ namebfptr + 1 ] == 92 ) ) 
  4896.             {
  4897.               if ( ( exbufptr + 2 > bufsize ) ) 
  4898.               bufferoverflow () ; 
  4899.               {
  4900.             exbuf [ exbufptr ] = 123 ; 
  4901.             incr ( exbufptr ) ; 
  4902.               } 
  4903.               {
  4904.             exbuf [ exbufptr ] = 92 ; 
  4905.             incr ( exbufptr ) ; 
  4906.               } 
  4907.               namebfptr = namebfptr + 2 ; 
  4908.               nmbracelevel = 1 ; 
  4909.               while ( ( ( namebfptr < namebfxptr ) && ( nmbracelevel > 
  4910.               0 ) ) ) {
  4911.               
  4912.             if ( ( svbuffer [ namebfptr ] == 125 ) ) 
  4913.             decr ( nmbracelevel ) ; 
  4914.             else if ( ( svbuffer [ namebfptr ] == 123 ) ) 
  4915.             incr ( nmbracelevel ) ; 
  4916.             {
  4917.               if ( ( exbufptr == bufsize ) ) 
  4918.               bufferoverflow () ; 
  4919.               {
  4920.                 exbuf [ exbufptr ] = svbuffer [ namebfptr ] ; 
  4921.                 incr ( exbufptr ) ; 
  4922.               } 
  4923.             } 
  4924.             incr ( namebfptr ) ; 
  4925.               } 
  4926.               goto lab15 ; 
  4927.             } 
  4928.             incr ( namebfptr ) ; 
  4929.           } 
  4930.           lab15: ; 
  4931.         } 
  4932.         incr ( curtoken ) ; 
  4933.         if ( ( curtoken < lasttoken ) ) 
  4934.         {
  4935.           if ( ( usedefault ) ) 
  4936.           {
  4937.             if ( ( ! doubleletter ) ) 
  4938.             {
  4939.               if ( ( exbufptr == bufsize ) ) 
  4940.               bufferoverflow () ; 
  4941.               {
  4942.             exbuf [ exbufptr ] = 46 ; 
  4943.             incr ( exbufptr ) ; 
  4944.               } 
  4945.             } 
  4946.             if ( ( lexclass [ namesepchar [ curtoken ] ] == 4 ) ) 
  4947.             {
  4948.               if ( ( exbufptr == bufsize ) ) 
  4949.               bufferoverflow () ; 
  4950.               {
  4951.             exbuf [ exbufptr ] = namesepchar [ curtoken ] ; 
  4952.             incr ( exbufptr ) ; 
  4953.               } 
  4954.             } 
  4955.             else if ( ( ( curtoken == lasttoken - 1 ) || ( ! 
  4956.             enoughtextchars ( 3 ) ) ) ) 
  4957.             {
  4958.               if ( ( exbufptr == bufsize ) ) 
  4959.               bufferoverflow () ; 
  4960.               {
  4961.             exbuf [ exbufptr ] = 126 ; 
  4962.             incr ( exbufptr ) ; 
  4963.               } 
  4964.             } 
  4965.             else {
  4966.             
  4967.               if ( ( exbufptr == bufsize ) ) 
  4968.               bufferoverflow () ; 
  4969.               {
  4970.             exbuf [ exbufptr ] = 32 ; 
  4971.             incr ( exbufptr ) ; 
  4972.               } 
  4973.             } 
  4974.           } 
  4975.           else {
  4976.               
  4977.             if ( ( exbuflength + ( spxptr2 - spxptr1 ) > bufsize ) ) 
  4978.             bufferoverflow () ; 
  4979.             spptr = spxptr1 ; 
  4980.             while ( ( spptr < spxptr2 ) ) {
  4981.             
  4982.               {
  4983.             exbuf [ exbufptr ] = strpool [ spptr ] ; 
  4984.             incr ( exbufptr ) ; 
  4985.               } 
  4986.               incr ( spptr ) ; 
  4987.             } 
  4988.           } 
  4989.         } 
  4990.           } 
  4991.           if ( ( ! usedefault ) ) 
  4992.           spptr = spxptr2 + 1 ; 
  4993.         } 
  4994.       } 
  4995.       else if ( ( strpool [ spptr ] == 125 ) ) 
  4996.       {
  4997.         decr ( spbracelevel ) ; 
  4998.         incr ( spptr ) ; 
  4999.         if ( ( spbracelevel > 0 ) ) 
  5000.         {
  5001.           if ( ( exbufptr == bufsize ) ) 
  5002.           bufferoverflow () ; 
  5003.           {
  5004.         exbuf [ exbufptr ] = 125 ; 
  5005.         incr ( exbufptr ) ; 
  5006.           } 
  5007.         } 
  5008.       } 
  5009.       else if ( ( strpool [ spptr ] == 123 ) ) 
  5010.       {
  5011.         incr ( spbracelevel ) ; 
  5012.         incr ( spptr ) ; 
  5013.         {
  5014.           if ( ( exbufptr == bufsize ) ) 
  5015.           bufferoverflow () ; 
  5016.           {
  5017.         exbuf [ exbufptr ] = 123 ; 
  5018.         incr ( exbufptr ) ; 
  5019.           } 
  5020.         } 
  5021.       } 
  5022.       else {
  5023.           
  5024.         {
  5025.           if ( ( exbufptr == bufsize ) ) 
  5026.           bufferoverflow () ; 
  5027.           {
  5028.         exbuf [ exbufptr ] = strpool [ spptr ] ; 
  5029.         incr ( exbufptr ) ; 
  5030.           } 
  5031.         } 
  5032.         incr ( spptr ) ; 
  5033.       } 
  5034.       if ( ( exbufptr > 0 ) ) 
  5035.       if ( ( exbuf [ exbufptr - 1 ] == 126 ) ) 
  5036.       {
  5037.         decr ( exbufptr ) ; 
  5038.         if ( ( exbuf [ exbufptr - 1 ] == 126 ) ) 
  5039.         ; 
  5040.         else if ( ( ! enoughtextchars ( 3 ) ) ) 
  5041.         incr ( exbufptr ) ; 
  5042.         else {
  5043.         
  5044.           exbuf [ exbufptr ] = 32 ; 
  5045.           incr ( exbufptr ) ; 
  5046.         } 
  5047.       } 
  5048.     } 
  5049.       } 
  5050.     } 
  5051.     else if ( ( strpool [ spptr ] == 125 ) ) 
  5052.     {
  5053.       bracesunbalancedcomp ( poplit1 ) ; 
  5054.       incr ( spptr ) ; 
  5055.     } 
  5056.     else {
  5057.     
  5058.       {
  5059.     if ( ( exbufptr == bufsize ) ) 
  5060.     bufferoverflow () ; 
  5061.     {
  5062.       exbuf [ exbufptr ] = strpool [ spptr ] ; 
  5063.       incr ( exbufptr ) ; 
  5064.     } 
  5065.       } 
  5066.       incr ( spptr ) ; 
  5067.     } 
  5068.     if ( ( spbracelevel > 0 ) ) 
  5069.     bracesunbalancedcomp ( poplit1 ) ; 
  5070.     exbuflength = exbufptr ; 
  5071.   } 
  5072. void
  5073. #ifdef STDC
  5074. zpushlitstk (integer pushlt ,stktype pushtype ) 
  5075. #else
  5076. zpushlitstk ( pushlt , pushtype ) 
  5077. integer pushlt ; 
  5078. stktype pushtype ; 
  5079. #endif
  5080. {
  5081. #ifdef TRACE
  5082.   litstkloc dumptr  ; 
  5083. #endif /* TRACE */
  5084.   litstack [ litstkptr ] = pushlt ; 
  5085.   litstktype [ litstkptr ] = pushtype ; 
  5086.     ;
  5087. #ifdef TRACE
  5088.   {register integer for_end; dumptr = 0 ; for_end = litstkptr ; if ( dumptr 
  5089.   <= for_end) do 
  5090.     {
  5091.       (void) ReverseFPuts( logfile ,  "  " ) ; 
  5092.     } 
  5093.   while ( dumptr++ < for_end ) ; } 
  5094.   {
  5095.     (void) ReverseFPuts( logfile ,  "Pushing " ) ; 
  5096.   } 
  5097.   switch ( ( litstktype [ litstkptr ] ) ) 
  5098.   {case 0 : 
  5099.     {
  5100.       (void) FPrintF( logfile , "%ld\r",  (long)litstack [ litstkptr ] ) ; 
  5101.     } 
  5102.     break ; 
  5103.   case 1 : 
  5104.     {
  5105.       {
  5106.     (void) FPutC( '"' , logfile );
  5107.       } 
  5108.       {
  5109.     outpoolstr ( logfile , litstack [ litstkptr ] ) ; 
  5110.       } 
  5111.       {
  5112.     (void) FPrintF( logfile , "%c\r",  '"' ) ; 
  5113.       } 
  5114.     } 
  5115.     break ; 
  5116.   case 2 : 
  5117.     {
  5118.       {
  5119.     (void) FPutC( '`' , logfile );
  5120.       } 
  5121.       {
  5122.     outpoolstr ( logfile , hashtext [ litstack [ litstkptr ] ] ) ; 
  5123.       } 
  5124.       {
  5125.     (void) FPrintF( logfile , "%c\r",  '\'' ) ; 
  5126.       } 
  5127.     } 
  5128.     break ; 
  5129.   case 3 : 
  5130.     {
  5131.       {
  5132.     (void) ReverseFPuts( logfile ,  "missing field `" ) ; 
  5133.       } 
  5134.       {
  5135.     outpoolstr ( logfile , litstack [ litstkptr ] ) ; 
  5136.       } 
  5137.       {
  5138.     (void) FPrintF( logfile , "%c\r",  '\'' ) ; 
  5139.       } 
  5140.     } 
  5141.     break ; 
  5142.   case 4 : 
  5143.     {
  5144.       (void) FPrintF( logfile , "%s\r",  "a bad literal--popped from an empty stack" ) ; 
  5145.     } 
  5146.     break ; 
  5147.     default: 
  5148.     unknwnliteralconfusi () ; 
  5149.     break ; 
  5150.   } 
  5151. #endif /* TRACE */
  5152.   if ( ( litstkptr == litstksize ) ) 
  5153.   {
  5154.     printoverflow () ; 
  5155.     {
  5156.       (void) FPrintF( logfile , "%s%ld\r",  "literal-stack size " , (long)litstksize ) ; 
  5157.       (void) FPrintFStdErr( "%s%ld\r",  "literal-stack size " , (long)litstksize ) ; 
  5158.     } 
  5159.     longjmp(jmp9998,1) ; 
  5160.   } 
  5161.   incr ( litstkptr ) ; 
  5162. void
  5163. #ifdef STDC
  5164. zpoplitstk (integer * poplit ,stktype * poptype ) 
  5165. #else
  5166. zpoplitstk ( poplit , poptype ) 
  5167. integer * poplit ; 
  5168. stktype * poptype ; 
  5169. #endif
  5170. {if ( ( litstkptr == 0 ) ) 
  5171.   {
  5172.     {
  5173.       {
  5174.     (void) ReverseFPuts( logfile ,  "You can't pop an empty literal stack" ) ; 
  5175.     (void) FPrintFStdErr(  "You can't pop an empty literal stack" ) ; 
  5176.       } 
  5177.       bstexwarnprint () ; 
  5178.     } 
  5179. *    poptype = 4 ; 
  5180.   } 
  5181.   else {
  5182.       
  5183.     decr ( litstkptr ) ; 
  5184. *    poplit = litstack [ litstkptr ] ; 
  5185. *    poptype = litstktype [ litstkptr ] ; 
  5186.     if ( ( *poptype == 1 ) ) 
  5187.     if ( ( *poplit >= cmdstrptr ) ) 
  5188.     {
  5189.       if ( ( *poplit != strptr - 1 ) ) 
  5190.       {
  5191.     {
  5192.       (void) ReverseFPuts( logfile ,  "Nontop top of string stack" ) ; 
  5193.       (void) FPrintFStdErr(  "Nontop top of string stack" ) ; 
  5194.     } 
  5195.     printconfusion () ; 
  5196.     longjmp(jmp9998,1) ; 
  5197.       } 
  5198.       {
  5199.     decr ( strptr ) ; 
  5200.     poolptr = strstart [ strptr ] ; 
  5201.       } 
  5202.     } 
  5203.   } 
  5204. void
  5205. #ifdef STDC
  5206. zprintwrongstklit (integer stklt ,stktype stktp1 ,stktype stktp2 ) 
  5207. #else
  5208. zprintwrongstklit ( stklt , stktp1 , stktp2 ) 
  5209. integer stklt ; 
  5210. stktype stktp1 , stktp2 ; 
  5211. #endif
  5212. {if ( ( stktp1 != 4 ) ) 
  5213.   {
  5214.     printstklit ( stklt , stktp1 ) ; 
  5215.     switch ( ( stktp2 ) ) 
  5216.     {case 0 : 
  5217.       {
  5218.     (void) ReverseFPuts( logfile ,  ", not an integer," ) ; 
  5219.     (void) FPrintFStdErr(  ", not an integer," ) ; 
  5220.       } 
  5221.       break ; 
  5222.     case 1 : 
  5223.       {
  5224.     (void) ReverseFPuts( logfile ,  ", not a string," ) ; 
  5225.     (void) FPrintFStdErr(  ", not a string," ) ; 
  5226.       } 
  5227.       break ; 
  5228.     case 2 : 
  5229.       {
  5230.     (void) ReverseFPuts( logfile ,  ", not a function," ) ; 
  5231.     (void) FPrintFStdErr(  ", not a function," ) ; 
  5232.       } 
  5233.       break ; 
  5234.     case 3 : 
  5235.     case 4 : 
  5236.       illeglliteralconfusi () ; 
  5237.       break ; 
  5238.       default: 
  5239.       unknwnliteralconfusi () ; 
  5240.       break ; 
  5241.     } 
  5242.     bstexwarnprint () ; 
  5243.   } 
  5244. void poptopandprint (void) {
  5245.     integer stklt  ; 
  5246.   stktype stktp  ; 
  5247.   poplitstk ( stklt , stktp ) ; 
  5248.   if ( ( stktp == 4 ) ) 
  5249.   {
  5250.     (void) FPrintF( logfile , "%s\r",  "Empty literal" ) ; 
  5251.     (void) FPrintFStdErr( "%s\r",  "Empty literal" ) ; 
  5252.   } 
  5253.   else printlit ( stklt , stktp ) ; 
  5254. }
  5255.  
  5256. void popwholestack (void) {
  5257.     while ( ( litstkptr > 0 ) ) poptopandprint () ; 
  5258.  
  5259. }
  5260. void initcommandexecution (void) {
  5261.     litstkptr = 0 ; 
  5262.   cmdstrptr = strptr ; 
  5263.  
  5264. }
  5265. void checkcommandexecutio (void) {
  5266.     if ( ( litstkptr != 0 ) ) 
  5267.   {
  5268.     {
  5269.       (void) FPrintF( logfile , "%s%ld%s\r",  "ptr=" , (long)litstkptr , ", stack=" ) ; 
  5270.       (void) FPrintFStdErr( "%s%ld%s\r",  "ptr=" , (long)litstkptr , ", stack=" ) ; 
  5271.     } 
  5272.     popwholestack () ; 
  5273.     {
  5274.       {
  5275.     (void) ReverseFPuts( logfile ,  "---the literal stack isn't empty" ) ; 
  5276.     (void) FPrintFStdErr(  "---the literal stack isn't empty" ) ; 
  5277.       } 
  5278.       bstexwarnprint () ; 
  5279.     } 
  5280.   } 
  5281.   if ( ( cmdstrptr != strptr ) ) 
  5282.   {
  5283.     ;
  5284. #ifdef TRACE
  5285.     {
  5286.       (void) FPrintF( logfile , "%s%ld%s%ld\r",  "Pointer is " , (long)strptr , " but should be " ,       (long)cmdstrptr ) ; 
  5287.       (void) FPrintFStdErr( "%s%ld%s%ld\r",  "Pointer is " , (long)strptr , " but should be " ,       (long)cmdstrptr ) ; 
  5288.     } 
  5289. #endif /* TRACE */
  5290.     {
  5291.       {
  5292.     (void) ReverseFPuts( logfile ,  "Nonempty empty string stack" ) ; 
  5293.     (void) FPrintFStdErr(  "Nonempty empty string stack" ) ; 
  5294.       } 
  5295.       printconfusion () ; 
  5296.       longjmp(jmp9998,1) ; 
  5297.     } 
  5298.   } 
  5299. }
  5300.  
  5301. void addpoolbufandpush (void) {
  5302.     { 
  5303.     if ( ( poolptr + exbuflength > poolsize ) ) 
  5304.     pooloverflow () ; 
  5305.   } 
  5306.   exbufptr = 0 ; 
  5307.   while ( ( exbufptr < exbuflength ) ) {
  5308.       
  5309.     {
  5310.       strpool [ poolptr ] = exbuf [ exbufptr ] ; 
  5311.       incr ( poolptr ) ; 
  5312.     } 
  5313.     incr ( exbufptr ) ; 
  5314.   } 
  5315.   pushlitstk ( makestring () , 1 ) ; 
  5316. void
  5317. #ifdef STDC
  5318. zaddbufpool (strnumber pstr ) 
  5319. #else
  5320. zaddbufpool ( pstr ) 
  5321. strnumber pstr ; 
  5322. #endif
  5323. {pptr1 = strstart [ pstr ] ; 
  5324.   pptr2 = strstart [ pstr + 1 ] ; 
  5325.   if ( ( exbuflength + ( pptr2 - pptr1 ) > bufsize ) ) 
  5326.   bufferoverflow () ; 
  5327.   exbufptr = exbuflength ; 
  5328.   while ( ( pptr1 < pptr2 ) ) {
  5329.       
  5330.     {
  5331.       exbuf [ exbufptr ] = strpool [ pptr1 ] ; 
  5332.       incr ( exbufptr ) ; 
  5333.     } 
  5334.     incr ( pptr1 ) ; 
  5335.   } 
  5336.   exbuflength = exbufptr ; 
  5337. void
  5338. #ifdef STDC
  5339. zaddoutpool (strnumber pstr ) 
  5340. #else
  5341. zaddoutpool ( pstr ) 
  5342. strnumber pstr ; 
  5343. #endif
  5344. {bufpointer breakptr  ; 
  5345.   bufpointer endptr  ; 
  5346.   pptr1 = strstart [ pstr ] ; 
  5347.   pptr2 = strstart [ pstr + 1 ] ; 
  5348.   if ( ( outbuflength + ( pptr2 - pptr1 ) > bufsize ) ) 
  5349.   {
  5350.     printoverflow () ; 
  5351.     {
  5352.       (void) FPrintF( logfile , "%s%ld\r",  "output buffer size " , (long)bufsize ) ; 
  5353.       (void) FPrintFStdErr( "%s%ld\r",  "output buffer size " , (long)bufsize ) ; 
  5354.     } 
  5355.     longjmp(jmp9998,1) ; 
  5356.   } 
  5357.   outbufptr = outbuflength ; 
  5358.   while ( ( pptr1 < pptr2 ) ) {
  5359.       
  5360.     outbuf [ outbufptr ] = strpool [ pptr1 ] ; 
  5361.     incr ( pptr1 ) ; 
  5362.     incr ( outbufptr ) ; 
  5363.   } 
  5364.   outbuflength = outbufptr ; 
  5365.   while ( ( outbuflength > maxprintline ) ) {
  5366.       
  5367.     endptr = outbuflength ; 
  5368.     outbufptr = maxprintline ; 
  5369.     while ( ( ( lexclass [ outbuf [ outbufptr ] ] != 1 ) && ( outbufptr >= 
  5370.     minprintline ) ) ) decr ( outbufptr ) ; 
  5371.     if ( ( outbufptr == minprintline - 1 ) ) 
  5372.     {
  5373.       outbuf [ endptr ] = outbuf [ maxprintline - 1 ] ; 
  5374.       outbuf [ maxprintline - 1 ] = 37 ; 
  5375.       outbuflength = maxprintline ; 
  5376.       breakptr = outbuflength - 1 ; 
  5377.       outputbblline () ; 
  5378.       outbuf [ maxprintline - 1 ] = outbuf [ endptr ] ; 
  5379.       outbufptr = 0 ; 
  5380.       tmpptr = breakptr ; 
  5381.       while ( ( tmpptr < endptr ) ) {
  5382.       
  5383.     outbuf [ outbufptr ] = outbuf [ tmpptr ] ; 
  5384.     incr ( outbufptr ) ; 
  5385.     incr ( tmpptr ) ; 
  5386.       } 
  5387.       outbuflength = endptr - breakptr ; 
  5388.     } 
  5389.     else {
  5390.     
  5391.       outbuflength = outbufptr ; 
  5392.       breakptr = outbuflength + 1 ; 
  5393.       outputbblline () ; 
  5394.       outbuf [ 0 ] = 32 ; 
  5395.       outbuf [ 1 ] = 32 ; 
  5396.       outbufptr = 2 ; 
  5397.       tmpptr = breakptr ; 
  5398.       while ( ( tmpptr < endptr ) ) {
  5399.       
  5400.     outbuf [ outbufptr ] = outbuf [ tmpptr ] ; 
  5401.     incr ( outbufptr ) ; 
  5402.     incr ( tmpptr ) ; 
  5403.       } 
  5404.       outbuflength = endptr - breakptr + 2 ; 
  5405.     } 
  5406.   } 
  5407. }
  5408.  
  5409. void xequals (void) {
  5410.     poplitstk ( poplit1 , poptyp1 ) ; 
  5411.   poplitstk ( poplit2 , poptyp2 ) ; 
  5412.   if ( ( poptyp1 != poptyp2 ) ) 
  5413.   {
  5414.     if ( ( ( poptyp1 != 4 ) && ( poptyp2 != 4 ) ) ) 
  5415.     {
  5416.       printstklit ( poplit1 , poptyp1 ) ; 
  5417.       {
  5418.     (void) ReverseFPuts( logfile ,  ", " ) ; 
  5419.     (void) FPrintFStdErr(  ", " ) ; 
  5420.       } 
  5421.       printstklit ( poplit2 , poptyp2 ) ; 
  5422.       printanewline () ; 
  5423.       {
  5424.     {
  5425.       (void) ReverseFPuts( logfile ,  "---they aren't the same literal types" ) ; 
  5426.       (void) FPrintFStdErr(  "---they aren't the same literal types" ) ; 
  5427.     } 
  5428.     bstexwarnprint () ; 
  5429.       } 
  5430.     } 
  5431.     pushlitstk ( 0 , 0 ) ; 
  5432.   } 
  5433.   else if ( ( ( poptyp1 != 0 ) && ( poptyp1 != 1 ) ) ) 
  5434.   {
  5435.     if ( ( poptyp1 != 4 ) ) 
  5436.     {
  5437.       printstklit ( poplit1 , poptyp1 ) ; 
  5438.       {
  5439.     {
  5440.       (void) ReverseFPuts( logfile ,  ", not an integer or a string," ) ; 
  5441.       (void) FPrintFStdErr(  ", not an integer or a string," ) ; 
  5442.     } 
  5443.     bstexwarnprint () ; 
  5444.       } 
  5445.     } 
  5446.     pushlitstk ( 0 , 0 ) ; 
  5447.   } 
  5448.   else if ( ( poptyp1 == 0 ) ) 
  5449.   if ( ( poplit2 == poplit1 ) ) 
  5450.   pushlitstk ( 1 , 0 ) ; 
  5451.   else pushlitstk ( 0 , 0 ) ; 
  5452.   else if ( ( streqstr ( poplit2 , poplit1 ) ) ) 
  5453.   pushlitstk ( 1 , 0 ) ; 
  5454.   else pushlitstk ( 0 , 0 ) ; 
  5455.  
  5456. }
  5457. void xgreaterthan (void) {
  5458.     poplitstk ( poplit1 , poptyp1 ) ; 
  5459.   poplitstk ( poplit2 , poptyp2 ) ; 
  5460.   if ( ( poptyp1 != 0 ) ) 
  5461.   {
  5462.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5463.     pushlitstk ( 0 , 0 ) ; 
  5464.   } 
  5465.   else if ( ( poptyp2 != 0 ) ) 
  5466.   {
  5467.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5468.     pushlitstk ( 0 , 0 ) ; 
  5469.   } 
  5470.   else if ( ( poplit2 > poplit1 ) ) 
  5471.   pushlitstk ( 1 , 0 ) ; 
  5472.   else pushlitstk ( 0 , 0 ) ; 
  5473.  
  5474. }
  5475. void xlessthan (void) {
  5476.     poplitstk ( poplit1 , poptyp1 ) ; 
  5477.   poplitstk ( poplit2 , poptyp2 ) ; 
  5478.   if ( ( poptyp1 != 0 ) ) 
  5479.   {
  5480.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5481.     pushlitstk ( 0 , 0 ) ; 
  5482.   } 
  5483.   else if ( ( poptyp2 != 0 ) ) 
  5484.   {
  5485.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5486.     pushlitstk ( 0 , 0 ) ; 
  5487.   } 
  5488.   else if ( ( poplit2 < poplit1 ) ) 
  5489.   pushlitstk ( 1 , 0 ) ; 
  5490.   else pushlitstk ( 0 , 0 ) ; 
  5491.  
  5492. }
  5493. void xplus (void) {
  5494.     poplitstk ( poplit1 , poptyp1 ) ; 
  5495.   poplitstk ( poplit2 , poptyp2 ) ; 
  5496.   if ( ( poptyp1 != 0 ) ) 
  5497.   {
  5498.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5499.     pushlitstk ( 0 , 0 ) ; 
  5500.   } 
  5501.   else if ( ( poptyp2 != 0 ) ) 
  5502.   {
  5503.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5504.     pushlitstk ( 0 , 0 ) ; 
  5505.   } 
  5506.   else pushlitstk ( poplit2 + poplit1 , 0 ) ; 
  5507.  
  5508. }
  5509. void xminus (void) {
  5510.     poplitstk ( poplit1 , poptyp1 ) ; 
  5511.   poplitstk ( poplit2 , poptyp2 ) ; 
  5512.   if ( ( poptyp1 != 0 ) ) 
  5513.   {
  5514.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  5515.     pushlitstk ( 0 , 0 ) ; 
  5516.   } 
  5517.   else if ( ( poptyp2 != 0 ) ) 
  5518.   {
  5519.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5520.     pushlitstk ( 0 , 0 ) ; 
  5521.   } 
  5522.   else pushlitstk ( poplit2 - poplit1 , 0 ) ; 
  5523.  
  5524. }
  5525. void xconcatenate (void) {
  5526.     poplitstk ( poplit1 , poptyp1 ) ; 
  5527.   poplitstk ( poplit2 , poptyp2 ) ; 
  5528.   if ( ( poptyp1 != 1 ) ) 
  5529.   {
  5530.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5531.     pushlitstk ( snull , 1 ) ; 
  5532.   } 
  5533.   else if ( ( poptyp2 != 1 ) ) 
  5534.   {
  5535.     printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  5536.     pushlitstk ( snull , 1 ) ; 
  5537.   } 
  5538.   else {
  5539.       
  5540.     if ( ( poplit2 >= cmdstrptr ) ) 
  5541.     if ( ( poplit1 >= cmdstrptr ) ) 
  5542.     {
  5543.       strstart [ poplit1 ] = strstart [ poplit1 + 1 ] ; 
  5544.       {
  5545.     incr ( strptr ) ; 
  5546.     poolptr = strstart [ strptr ] ; 
  5547.       } 
  5548.       incr ( litstkptr ) ; 
  5549.     } 
  5550.     else if ( ( ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) == 0 ) ) 
  5551.     pushlitstk ( poplit1 , 1 ) ; 
  5552.     else {
  5553.     
  5554.       poolptr = strstart [ poplit2 + 1 ] ; 
  5555.       {
  5556.     if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) > 
  5557.     poolsize ) ) 
  5558.     pooloverflow () ; 
  5559.       } 
  5560.       spptr = strstart [ poplit1 ] ; 
  5561.       spend = strstart [ poplit1 + 1 ] ; 
  5562.       while ( ( spptr < spend ) ) {
  5563.       
  5564.     {
  5565.       strpool [ poolptr ] = strpool [ spptr ] ; 
  5566.       incr ( poolptr ) ; 
  5567.     } 
  5568.     incr ( spptr ) ; 
  5569.       } 
  5570.       pushlitstk ( makestring () , 1 ) ; 
  5571.     } 
  5572.     else {
  5573.     
  5574.       if ( ( poplit1 >= cmdstrptr ) ) 
  5575.       if ( ( ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) == 0 ) ) 
  5576.       {
  5577.     {
  5578.       incr ( strptr ) ; 
  5579.       poolptr = strstart [ strptr ] ; 
  5580.     } 
  5581.     litstack [ litstkptr ] = poplit1 ; 
  5582.     incr ( litstkptr ) ; 
  5583.       } 
  5584.       else if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) == 0 ) ) 
  5585.       incr ( litstkptr ) ; 
  5586.       else {
  5587.       
  5588.     splength = ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) ; 
  5589.     sp2length = ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) ; 
  5590.     {
  5591.       if ( ( poolptr + splength + sp2length > poolsize ) ) 
  5592.       pooloverflow () ; 
  5593.     } 
  5594.     spptr = strstart [ poplit1 + 1 ] ; 
  5595.     spend = strstart [ poplit1 ] ; 
  5596.     spxptr1 = spptr + sp2length ; 
  5597.     while ( ( spptr > spend ) ) {
  5598.         
  5599.       decr ( spptr ) ; 
  5600.       decr ( spxptr1 ) ; 
  5601.       strpool [ spxptr1 ] = strpool [ spptr ] ; 
  5602.     } 
  5603.     spptr = strstart [ poplit2 ] ; 
  5604.     spend = strstart [ poplit2 + 1 ] ; 
  5605.     while ( ( spptr < spend ) ) {
  5606.         
  5607.       {
  5608.         strpool [ poolptr ] = strpool [ spptr ] ; 
  5609.         incr ( poolptr ) ; 
  5610.       } 
  5611.       incr ( spptr ) ; 
  5612.     } 
  5613.     poolptr = poolptr + splength ; 
  5614.     pushlitstk ( makestring () , 1 ) ; 
  5615.       } 
  5616.       else {
  5617.       
  5618.     if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) == 0 ) ) 
  5619.     incr ( litstkptr ) ; 
  5620.     else if ( ( ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) == 0 ) 
  5621.     ) 
  5622.     pushlitstk ( poplit1 , 1 ) ; 
  5623.     else {
  5624.         
  5625.       {
  5626.         if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] 
  5627.         ) + ( strstart [ poplit2 + 1 ] - strstart [ poplit2 ] ) > poolsize 
  5628.         ) ) 
  5629.         pooloverflow () ; 
  5630.       } 
  5631.       spptr = strstart [ poplit2 ] ; 
  5632.       spend = strstart [ poplit2 + 1 ] ; 
  5633.       while ( ( spptr < spend ) ) {
  5634.           
  5635.         {
  5636.           strpool [ poolptr ] = strpool [ spptr ] ; 
  5637.           incr ( poolptr ) ; 
  5638.         } 
  5639.         incr ( spptr ) ; 
  5640.       } 
  5641.       spptr = strstart [ poplit1 ] ; 
  5642.       spend = strstart [ poplit1 + 1 ] ; 
  5643.       while ( ( spptr < spend ) ) {
  5644.           
  5645.         {
  5646.           strpool [ poolptr ] = strpool [ spptr ] ; 
  5647.           incr ( poolptr ) ; 
  5648.         } 
  5649.         incr ( spptr ) ; 
  5650.       } 
  5651.       pushlitstk ( makestring () , 1 ) ; 
  5652.     } 
  5653.       } 
  5654.     } 
  5655.   } 
  5656.  
  5657. }
  5658. void xgets (void) {
  5659.     poplitstk ( poplit1 , poptyp1 ) ; 
  5660.   poplitstk ( poplit2 , poptyp2 ) ; 
  5661.   if ( ( poptyp1 != 2 ) ) 
  5662.   printwrongstklit ( poplit1 , poptyp1 , 2 ) ; 
  5663.   else if ( ( ( ! messwithentries ) && ( ( fntype [ poplit1 ] == 6 ) || ( 
  5664.   fntype [ poplit1 ] == 5 ) ) ) ) 
  5665.   bstcantmesswithentri () ; 
  5666.   else switch ( ( fntype [ poplit1 ] ) ) 
  5667.   {case 5 : 
  5668.     if ( ( poptyp2 != 0 ) ) 
  5669.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5670.     else entryints [ citeptr * numentints + ilkinfo [ poplit1 ] ] = poplit2 ; 
  5671.     break ; 
  5672.   case 6 : 
  5673.     {
  5674.       if ( ( poptyp2 != 1 ) ) 
  5675.       printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  5676.       else {
  5677.       
  5678.     strentptr = citeptr * numentstrs + ilkinfo [ poplit1 ] ; 
  5679.     entchrptr = 0 ; 
  5680.     spptr = strstart [ poplit2 ] ; 
  5681.     spxptr1 = strstart [ poplit2 + 1 ] ; 
  5682.     if ( ( spxptr1 - spptr > entstrsize ) ) 
  5683.     {
  5684.       {
  5685.         bst1printstringsizee () ; 
  5686.         {
  5687.           (void) FPrintF( logfile , "%ld%s",  (long)entstrsize , ", the entry" ) ; 
  5688.           (void) FPrintFStdErr( "%ld%s",  (long)entstrsize , ", the entry" ) ; 
  5689.         } 
  5690.         bst2printstringsizee () ; 
  5691.       } 
  5692.       spxptr1 = spptr + entstrsize ; 
  5693.     } 
  5694.     while ( ( spptr < spxptr1 ) ) {
  5695.         
  5696.       entrystrs [ strentptr ] [ entchrptr ] = strpool [ spptr ] ; 
  5697.       incr ( entchrptr ) ; 
  5698.       incr ( spptr ) ; 
  5699.     } 
  5700.     entrystrs [ strentptr ] [ entchrptr ] = 127 ; 
  5701.       } 
  5702.     } 
  5703.     break ; 
  5704.   case 7 : 
  5705.     if ( ( poptyp2 != 0 ) ) 
  5706.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  5707.     else ilkinfo [ poplit1 ] = poplit2 ; 
  5708.     break ; 
  5709.   case 8 : 
  5710.     {
  5711.       if ( ( poptyp2 != 1 ) ) 
  5712.       printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  5713.       else {
  5714.       
  5715.     strglbptr = ilkinfo [ poplit1 ] ; 
  5716.     if ( ( poplit2 < cmdstrptr ) ) 
  5717.     glbstrptr [ strglbptr ] = poplit2 ; 
  5718.     else {
  5719.         
  5720.       glbstrptr [ strglbptr ] = 0 ; 
  5721.       globchrptr = 0 ; 
  5722.       spptr = strstart [ poplit2 ] ; 
  5723.       spend = strstart [ poplit2 + 1 ] ; 
  5724.       if ( ( spend - spptr > globstrsize ) ) 
  5725.       {
  5726.         {
  5727.           bst1printstringsizee () ; 
  5728.           {
  5729.         (void) FPrintF( logfile , "%ld%s",  (long)globstrsize , ", the global" ) ; 
  5730.         (void) FPrintFStdErr( "%ld%s",  (long)globstrsize , ", the global" ) ; 
  5731.           } 
  5732.           bst2printstringsizee () ; 
  5733.         } 
  5734.         spend = spptr + globstrsize ; 
  5735.       } 
  5736.       while ( ( spptr < spend ) ) {
  5737.           
  5738.         globalstrs [ strglbptr ] [ globchrptr ] = strpool [ spptr ] ; 
  5739.         incr ( globchrptr ) ; 
  5740.         incr ( spptr ) ; 
  5741.       } 
  5742.       glbstrend [ strglbptr ] = globchrptr ; 
  5743.     } 
  5744.       } 
  5745.     } 
  5746.     break ; 
  5747.     default: 
  5748.     {
  5749.       {
  5750.     (void) ReverseFPuts( logfile ,  "You can't assign to type " ) ; 
  5751.     (void) FPrintFStdErr(  "You can't assign to type " ) ; 
  5752.       } 
  5753.       printfnclass ( poplit1 ) ; 
  5754.       {
  5755.     {
  5756.       (void) ReverseFPuts( logfile ,  ", a nonvariable function class" ) ; 
  5757.       (void) FPrintFStdErr(  ", a nonvariable function class" ) ; 
  5758.     } 
  5759.     bstexwarnprint () ; 
  5760.       } 
  5761.     } 
  5762.     break ; 
  5763.   } 
  5764.  
  5765. }
  5766. void xaddperiod (void) {
  5767.     /* 15 */ poplitstk ( poplit1 , poptyp1 ) ; 
  5768.   if ( ( poptyp1 != 1 ) ) 
  5769.   {
  5770.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5771.     pushlitstk ( snull , 1 ) ; 
  5772.   } 
  5773.   else if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) == 0 ) ) 
  5774.   pushlitstk ( snull , 1 ) ; 
  5775.   else {
  5776.       
  5777.     spptr = strstart [ poplit1 + 1 ] ; 
  5778.     spend = strstart [ poplit1 ] ; 
  5779.     while ( ( spptr > spend ) ) {
  5780.     
  5781.       decr ( spptr ) ; 
  5782.       if ( ( strpool [ spptr ] != 125 ) ) 
  5783.       goto lab15 ; 
  5784.     } 
  5785.     lab15: switch ( ( strpool [ spptr ] ) ) 
  5786.     {case 46 : 
  5787.     case 63 : 
  5788.     case 33 : 
  5789.       {
  5790.     if ( ( litstack [ litstkptr ] >= cmdstrptr ) ) 
  5791.     {
  5792.       incr ( strptr ) ; 
  5793.       poolptr = strstart [ strptr ] ; 
  5794.     } 
  5795.     incr ( litstkptr ) ; 
  5796.       } 
  5797.       break ; 
  5798.       default: 
  5799.       {
  5800.     if ( ( poplit1 < cmdstrptr ) ) 
  5801.     {
  5802.       {
  5803.         if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] 
  5804.         ) + 1 > poolsize ) ) 
  5805.         pooloverflow () ; 
  5806.       } 
  5807.       spptr = strstart [ poplit1 ] ; 
  5808.       spend = strstart [ poplit1 + 1 ] ; 
  5809.       while ( ( spptr < spend ) ) {
  5810.           
  5811.         {
  5812.           strpool [ poolptr ] = strpool [ spptr ] ; 
  5813.           incr ( poolptr ) ; 
  5814.         } 
  5815.         incr ( spptr ) ; 
  5816.       } 
  5817.     } 
  5818.     else {
  5819.         
  5820.       poolptr = strstart [ poplit1 + 1 ] ; 
  5821.       {
  5822.         if ( ( poolptr + 1 > poolsize ) ) 
  5823.         pooloverflow () ; 
  5824.       } 
  5825.     } 
  5826.     {
  5827.       strpool [ poolptr ] = 46 ; 
  5828.       incr ( poolptr ) ; 
  5829.     } 
  5830.     pushlitstk ( makestring () , 1 ) ; 
  5831.       } 
  5832.       break ; 
  5833.     } 
  5834.   } 
  5835.  
  5836. }
  5837. void xchangecase (void) {
  5838.     /* 21 */ poplitstk ( poplit1 , poptyp1 ) ; 
  5839.   poplitstk ( poplit2 , poptyp2 ) ; 
  5840.   if ( ( poptyp1 != 1 ) ) 
  5841.   {
  5842.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  5843.     pushlitstk ( snull , 1 ) ; 
  5844.   } 
  5845.   else if ( ( poptyp2 != 1 ) ) 
  5846.   {
  5847.     printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  5848.     pushlitstk ( snull , 1 ) ; 
  5849.   } 
  5850.   else {
  5851.       
  5852.     {
  5853.       switch ( ( strpool [ strstart [ poplit1 ] ] ) ) 
  5854.       {case 116 : 
  5855.       case 84 : 
  5856.     conversiontype = 0 ; 
  5857.     break ; 
  5858.       case 108 : 
  5859.       case 76 : 
  5860.     conversiontype = 1 ; 
  5861.     break ; 
  5862.       case 117 : 
  5863.       case 85 : 
  5864.     conversiontype = 2 ; 
  5865.     break ; 
  5866.     default: 
  5867.     conversiontype = 3 ; 
  5868.     break ; 
  5869.       } 
  5870.       if ( ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) != 1 ) || ( 
  5871.       conversiontype == 3 ) ) ) 
  5872.       {
  5873.     conversiontype = 3 ; 
  5874.     printapoolstr ( poplit1 ) ; 
  5875.     {
  5876.       {
  5877.         (void) ReverseFPuts( logfile ,  " is an illegal case-conversion string" ) ; 
  5878.         (void) FPrintFStdErr(  " is an illegal case-conversion string" ) ; 
  5879.       } 
  5880.       bstexwarnprint () ; 
  5881.     } 
  5882.       } 
  5883.     } 
  5884.     exbuflength = 0 ; 
  5885.     addbufpool ( poplit2 ) ; 
  5886.     {
  5887.       bracelevel = 0 ; 
  5888.       exbufptr = 0 ; 
  5889.       while ( ( exbufptr < exbuflength ) ) {
  5890.       
  5891.     if ( ( exbuf [ exbufptr ] == 123 ) ) 
  5892.     {
  5893.       incr ( bracelevel ) ; 
  5894.       if ( ( bracelevel != 1 ) ) 
  5895.       goto lab21 ; 
  5896.       if ( ( exbufptr + 4 > exbuflength ) ) 
  5897.       goto lab21 ; 
  5898.       else if ( ( exbuf [ exbufptr + 1 ] != 92 ) ) 
  5899.       goto lab21 ; 
  5900.       if ( ( conversiontype == 0 ) ) 
  5901.       if ( ( exbufptr == 0 ) ) 
  5902.       goto lab21 ; 
  5903.       else if ( ( ( prevcolon ) && ( lexclass [ exbuf [ exbufptr - 1 ] ] 
  5904.       == 1 ) ) ) 
  5905.       goto lab21 ; 
  5906.       {
  5907.         incr ( exbufptr ) ; 
  5908.         while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) ) ) {
  5909.         
  5910.           incr ( exbufptr ) ; 
  5911.           exbufxptr = exbufptr ; 
  5912.           while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  5913.           exbufptr ] ] == 2 ) ) ) incr ( exbufptr ) ; 
  5914.           controlseqloc = strlookup ( exbuf , exbufxptr , exbufptr - 
  5915.           exbufxptr , 14 , false ) ; 
  5916.           if ( ( hashfound ) ) 
  5917.           {
  5918.         switch ( ( conversiontype ) ) 
  5919.         {case 0 : 
  5920.         case 1 : 
  5921.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  5922.           {case 11 : 
  5923.           case 9 : 
  5924.           case 3 : 
  5925.           case 5 : 
  5926.           case 7 : 
  5927.             lowercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  5928.             break ; 
  5929.             default: 
  5930.             ; 
  5931.             break ; 
  5932.           } 
  5933.           break ; 
  5934.         case 2 : 
  5935.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  5936.           {case 10 : 
  5937.           case 8 : 
  5938.           case 2 : 
  5939.           case 4 : 
  5940.           case 6 : 
  5941.             uppercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  5942.             break ; 
  5943.           case 0 : 
  5944.           case 1 : 
  5945.           case 12 : 
  5946.             {
  5947.               uppercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  5948.               while ( ( exbufxptr < exbufptr ) ) {
  5949.               
  5950.             exbuf [ exbufxptr - 1 ] = exbuf [ exbufxptr ] ; 
  5951.             incr ( exbufxptr ) ; 
  5952.               } 
  5953.               decr ( exbufxptr ) ; 
  5954.               while ( ( ( exbufptr < exbuflength ) && ( lexclass [ 
  5955.               exbuf [ exbufptr ] ] == 1 ) ) ) incr ( exbufptr ) ; 
  5956.               tmpptr = exbufptr ; 
  5957.               while ( ( tmpptr < exbuflength ) ) {
  5958.               
  5959.             exbuf [ tmpptr - ( exbufptr - exbufxptr ) ] = exbuf [ 
  5960.             tmpptr ] ; 
  5961.             incr ( tmpptr ) ; 
  5962.               } 
  5963.               exbuflength = tmpptr - ( exbufptr - exbufxptr ) ; 
  5964.               exbufptr = exbufxptr ; 
  5965.             } 
  5966.             break ; 
  5967.             default: 
  5968.             ; 
  5969.             break ; 
  5970.           } 
  5971.           break ; 
  5972.         case 3 : 
  5973.           ; 
  5974.           break ; 
  5975.           default: 
  5976.           caseconversionconfus () ; 
  5977.           break ; 
  5978.         } 
  5979.           } 
  5980.           exbufxptr = exbufptr ; 
  5981.           while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) && ( 
  5982.           exbuf [ exbufptr ] != 92 ) ) ) {
  5983.           
  5984.         if ( ( exbuf [ exbufptr ] == 125 ) ) 
  5985.         decr ( bracelevel ) ; 
  5986.         else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  5987.         incr ( bracelevel ) ; 
  5988.         incr ( exbufptr ) ; 
  5989.           } 
  5990.           {
  5991.         switch ( ( conversiontype ) ) 
  5992.         {case 0 : 
  5993.         case 1 : 
  5994.           lowercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  5995.           break ; 
  5996.         case 2 : 
  5997.           uppercase ( exbuf , exbufxptr , exbufptr - exbufxptr ) ; 
  5998.           break ; 
  5999.         case 3 : 
  6000.           ; 
  6001.           break ; 
  6002.           default: 
  6003.           caseconversionconfus () ; 
  6004.           break ; 
  6005.         } 
  6006.           } 
  6007.         } 
  6008.         decr ( exbufptr ) ; 
  6009.       } 
  6010.       lab21: prevcolon = false ; 
  6011.     } 
  6012.     else if ( ( exbuf [ exbufptr ] == 125 ) ) 
  6013.     {
  6014.       decrbracelevel ( poplit2 ) ; 
  6015.       prevcolon = false ; 
  6016.     } 
  6017.     else if ( ( bracelevel == 0 ) ) 
  6018.     {
  6019.       switch ( ( conversiontype ) ) 
  6020.       {case 0 : 
  6021.         {
  6022.           if ( ( exbufptr == 0 ) ) 
  6023.           ; 
  6024.           else if ( ( ( prevcolon ) && ( lexclass [ exbuf [ exbufptr - 1 ] 
  6025.           ] == 1 ) ) ) 
  6026.           ; 
  6027.           else lowercase ( exbuf , exbufptr , 1 ) ; 
  6028.           if ( ( exbuf [ exbufptr ] == 58 ) ) 
  6029.           prevcolon = true ; 
  6030.           else if ( ( lexclass [ exbuf [ exbufptr ] ] != 1 ) ) 
  6031.           prevcolon = false ; 
  6032.         } 
  6033.         break ; 
  6034.       case 1 : 
  6035.         lowercase ( exbuf , exbufptr , 1 ) ; 
  6036.         break ; 
  6037.       case 2 : 
  6038.         uppercase ( exbuf , exbufptr , 1 ) ; 
  6039.         break ; 
  6040.       case 3 : 
  6041.         ; 
  6042.         break ; 
  6043.         default: 
  6044.         caseconversionconfus () ; 
  6045.         break ; 
  6046.       } 
  6047.     } 
  6048.     incr ( exbufptr ) ; 
  6049.       } 
  6050.       checkbracelevel ( poplit2 ) ; 
  6051.     } 
  6052.     addpoolbufandpush () ; 
  6053.   } 
  6054.  
  6055. }
  6056. void xchrtoint (void) {
  6057.     poplitstk ( poplit1 , poptyp1 ) ; 
  6058.   if ( ( poptyp1 != 1 ) ) 
  6059.   {
  6060.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6061.     pushlitstk ( 0 , 0 ) ; 
  6062.   } 
  6063.   else if ( ( ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) != 1 ) ) 
  6064.   {
  6065.     {
  6066.       (void) FPutC( '"' , logfile );
  6067.       (void) FPutC( '"' );
  6068.     } 
  6069.     printapoolstr ( poplit1 ) ; 
  6070.     {
  6071.       {
  6072.     (void) ReverseFPuts( logfile ,  "\" isn't a single character" ) ; 
  6073.     (void) FPrintFStdErr(  "\" isn't a single character" ) ; 
  6074.       } 
  6075.       bstexwarnprint () ; 
  6076.     } 
  6077.     pushlitstk ( 0 , 0 ) ; 
  6078.   } 
  6079.   else pushlitstk ( strpool [ strstart [ poplit1 ] ] , 0 ) ; 
  6080.  
  6081. }
  6082. void xcite (void) {
  6083.     if ( ( ! messwithentries ) ) 
  6084.   bstcantmesswithentri () ; 
  6085.   else pushlitstk ( citelist [ citeptr ] , 1 ) ; 
  6086.  
  6087. }
  6088. void xduplicate (void) {
  6089.     poplitstk ( poplit1 , poptyp1 ) ; 
  6090.   if ( ( poptyp1 != 1 ) ) 
  6091.   {
  6092.     pushlitstk ( poplit1 , poptyp1 ) ; 
  6093.     pushlitstk ( poplit1 , poptyp1 ) ; 
  6094.   } 
  6095.   else {
  6096.       
  6097.     {
  6098.       if ( ( litstack [ litstkptr ] >= cmdstrptr ) ) 
  6099.       {
  6100.     incr ( strptr ) ; 
  6101.     poolptr = strstart [ strptr ] ; 
  6102.       } 
  6103.       incr ( litstkptr ) ; 
  6104.     } 
  6105.     if ( ( poplit1 < cmdstrptr ) ) 
  6106.     pushlitstk ( poplit1 , poptyp1 ) ; 
  6107.     else {
  6108.     
  6109.       {
  6110.     if ( ( poolptr + ( strstart [ poplit1 + 1 ] - strstart [ poplit1 ] ) > 
  6111.     poolsize ) ) 
  6112.     pooloverflow () ; 
  6113.       } 
  6114.       spptr = strstart [ poplit1 ] ; 
  6115.       spend = strstart [ poplit1 + 1 ] ; 
  6116.       while ( ( spptr < spend ) ) {
  6117.       
  6118.     {
  6119.       strpool [ poolptr ] = strpool [ spptr ] ; 
  6120.       incr ( poolptr ) ; 
  6121.     } 
  6122.     incr ( spptr ) ; 
  6123.       } 
  6124.       pushlitstk ( makestring () , 1 ) ; 
  6125.     } 
  6126.   } 
  6127.  
  6128. }
  6129. void xempty (void) {
  6130.     /* 10 */ poplitstk ( poplit1 , poptyp1 ) ; 
  6131.   switch ( ( poptyp1 ) ) 
  6132.   {case 1 : 
  6133.     {
  6134.       spptr = strstart [ poplit1 ] ; 
  6135.       spend = strstart [ poplit1 + 1 ] ; 
  6136.       while ( ( spptr < spend ) ) {
  6137.       
  6138.     if ( ( lexclass [ strpool [ spptr ] ] != 1 ) ) 
  6139.     {
  6140.       pushlitstk ( 0 , 0 ) ; 
  6141.       goto lab10 ; 
  6142.     } 
  6143.     incr ( spptr ) ; 
  6144.       } 
  6145.       pushlitstk ( 1 , 0 ) ; 
  6146.     } 
  6147.     break ; 
  6148.   case 3 : 
  6149.     pushlitstk ( 1 , 0 ) ; 
  6150.     break ; 
  6151.   case 4 : 
  6152.     pushlitstk ( 0 , 0 ) ; 
  6153.     break ; 
  6154.     default: 
  6155.     {
  6156.       printstklit ( poplit1 , poptyp1 ) ; 
  6157.       {
  6158.     {
  6159.       (void) ReverseFPuts( logfile ,  ", not a string or missing field," ) ; 
  6160.       (void) FPrintFStdErr(  ", not a string or missing field," ) ; 
  6161.     } 
  6162.     bstexwarnprint () ; 
  6163.       } 
  6164.       pushlitstk ( 0 , 0 ) ; 
  6165.     } 
  6166.     break ; 
  6167.   } 
  6168.   lab10: ; 
  6169.  
  6170. }
  6171. void xformatname (void) {
  6172.     /* 16 17 52 */ poplitstk ( poplit1 , poptyp1 ) ; 
  6173.   poplitstk ( poplit2 , poptyp2 ) ; 
  6174.   poplitstk ( poplit3 , poptyp3 ) ; 
  6175.   if ( ( poptyp1 != 1 ) ) 
  6176.   {
  6177.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6178.     pushlitstk ( snull , 1 ) ; 
  6179.   } 
  6180.   else if ( ( poptyp2 != 0 ) ) 
  6181.   {
  6182.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  6183.     pushlitstk ( snull , 1 ) ; 
  6184.   } 
  6185.   else if ( ( poptyp3 != 1 ) ) 
  6186.   {
  6187.     printwrongstklit ( poplit3 , poptyp3 , 1 ) ; 
  6188.     pushlitstk ( snull , 1 ) ; 
  6189.   } 
  6190.   else {
  6191.       
  6192.     exbuflength = 0 ; 
  6193.     addbufpool ( poplit3 ) ; 
  6194.     {
  6195.       exbufptr = 0 ; 
  6196.       numnames = 0 ; 
  6197.       while ( ( ( numnames < poplit2 ) && ( exbufptr < exbuflength ) ) ) {
  6198.       
  6199.     incr ( numnames ) ; 
  6200.     exbufxptr = exbufptr ; 
  6201.     namescanforand ( poplit3 ) ; 
  6202.       } 
  6203.       if ( ( exbufptr < exbuflength ) ) 
  6204.       exbufptr = exbufptr - 4 ; 
  6205.       if ( ( numnames < poplit2 ) ) 
  6206.       {
  6207.     if ( ( poplit2 == 1 ) ) 
  6208.     {
  6209.       (void) ReverseFPuts( logfile ,  "There is no name in \"" ) ; 
  6210.       (void) FPrintFStdErr(  "There is no name in \"" ) ; 
  6211.     } 
  6212.     else {
  6213.         
  6214.       (void) FPrintF( logfile , "%s%ld%s",  "There aren't " , (long)poplit2 , " names in \"" ) ; 
  6215.       (void) FPrintFStdErr( "%s%ld%s",  "There aren't " , (long)poplit2 , " names in \"" ) ; 
  6216.     } 
  6217.     printapoolstr ( poplit3 ) ; 
  6218.     {
  6219.       {
  6220.         (void) FPutC( '"' , logfile );
  6221.         (void) FPutC( '"' );
  6222.       } 
  6223.       bstexwarnprint () ; 
  6224.     } 
  6225.       } 
  6226.     } 
  6227.     {
  6228.       {
  6229.     while ( ( ( exbufxptr < exbufptr ) && ( lexclass [ exbuf [ exbufptr ] 
  6230.     ] == 1 ) && ( lexclass [ exbuf [ exbufptr ] ] == 4 ) ) ) incr ( 
  6231.     exbufxptr ) ; 
  6232.     while ( ( exbufptr > exbufxptr ) ) switch ( ( lexclass [ exbuf [ 
  6233.     exbufptr - 1 ] ] ) ) 
  6234.     {case 1 : 
  6235.     case 4 : 
  6236.       decr ( exbufptr ) ; 
  6237.       break ; 
  6238.       default: 
  6239.       if ( ( exbuf [ exbufptr - 1 ] == 44 ) ) 
  6240.       {
  6241.         {
  6242.           (void) FPrintF( logfile , "%s%ld%s",  "Name " , (long)poplit2 , " in \"" ) ; 
  6243.           (void) FPrintFStdErr( "%s%ld%s",  "Name " , (long)poplit2 , " in \"" ) ; 
  6244.         } 
  6245.         printapoolstr ( poplit3 ) ; 
  6246.         {
  6247.           (void) ReverseFPuts( logfile ,  "\" has a comma at the end" ) ; 
  6248.           (void) FPrintFStdErr(  "\" has a comma at the end" ) ; 
  6249.         } 
  6250.         bstexwarnprint () ; 
  6251.         decr ( exbufptr ) ; 
  6252.       } 
  6253.       else goto lab16 ; 
  6254.       break ; 
  6255.     } 
  6256.     lab16: ; 
  6257.       } 
  6258.       namebfptr = 0 ; 
  6259.       numcommas = 0 ; 
  6260.       numtokens = 0 ; 
  6261.       tokenstarting = true ; 
  6262.       while ( ( exbufxptr < exbufptr ) ) switch ( ( exbuf [ exbufxptr ] ) ) 
  6263.       {case 44 : 
  6264.     {
  6265.       if ( ( numcommas == 2 ) ) 
  6266.       {
  6267.         {
  6268.           (void) FPrintF( logfile , "%s%ld%s",  "Too many commas in name " , (long)poplit2 ,               " of \"" ) ; 
  6269.           (void) FPrintFStdErr( "%s%ld%s",  "Too many commas in name " , (long)poplit2 , " of \""               ) ; 
  6270.         } 
  6271.         printapoolstr ( poplit3 ) ; 
  6272.         {
  6273.           (void) FPutC( '"' , logfile );
  6274.           (void) FPutC( '"' );
  6275.         } 
  6276.         bstexwarnprint () ; 
  6277.       } 
  6278.       else {
  6279.           
  6280.         incr ( numcommas ) ; 
  6281.         if ( ( numcommas == 1 ) ) 
  6282.         comma1 = numtokens ; 
  6283.         else comma2 = numtokens ; 
  6284.         namesepchar [ numtokens ] = 44 ; 
  6285.       } 
  6286.       incr ( exbufxptr ) ; 
  6287.       tokenstarting = true ; 
  6288.     } 
  6289.     break ; 
  6290.       case 123 : 
  6291.     {
  6292.       incr ( bracelevel ) ; 
  6293.       if ( ( tokenstarting ) ) 
  6294.       {
  6295.         nametok [ numtokens ] = namebfptr ; 
  6296.         incr ( numtokens ) ; 
  6297.       } 
  6298.       svbuffer [ namebfptr ] = exbuf [ exbufxptr ] ; 
  6299.       incr ( namebfptr ) ; 
  6300.       incr ( exbufxptr ) ; 
  6301.       while ( ( ( bracelevel > 0 ) && ( exbufxptr < exbufptr ) ) ) {
  6302.           
  6303.         if ( ( exbuf [ exbufxptr ] == 125 ) ) 
  6304.         decr ( bracelevel ) ; 
  6305.         else if ( ( exbuf [ exbufxptr ] == 123 ) ) 
  6306.         incr ( bracelevel ) ; 
  6307.         svbuffer [ namebfptr ] = exbuf [ exbufxptr ] ; 
  6308.         incr ( namebfptr ) ; 
  6309.         incr ( exbufxptr ) ; 
  6310.       } 
  6311.       tokenstarting = false ; 
  6312.     } 
  6313.     break ; 
  6314.       case 125 : 
  6315.     {
  6316.       if ( ( tokenstarting ) ) 
  6317.       {
  6318.         nametok [ numtokens ] = namebfptr ; 
  6319.         incr ( numtokens ) ; 
  6320.       } 
  6321.       {
  6322.         (void) FPrintF( logfile , "%s%ld%s",  "Name " , (long)poplit2 , " of \"" ) ; 
  6323.         (void) FPrintFStdErr( "%s%ld%s",  "Name " , (long)poplit2 , " of \"" ) ; 
  6324.       } 
  6325.       printapoolstr ( poplit3 ) ; 
  6326.       {
  6327.         {
  6328.           (void) ReverseFPuts( logfile ,  "\" isn't brace balanced" ) ; 
  6329.           (void) FPrintFStdErr(  "\" isn't brace balanced" ) ; 
  6330.         } 
  6331.         bstexwarnprint () ; 
  6332.       } 
  6333.       incr ( exbufxptr ) ; 
  6334.       tokenstarting = false ; 
  6335.     } 
  6336.     break ; 
  6337.     default: 
  6338.     switch ( ( lexclass [ exbuf [ exbufxptr ] ] ) ) 
  6339.     {case 1 : 
  6340.       {
  6341.         if ( ( ! tokenstarting ) ) 
  6342.         namesepchar [ numtokens ] = 32 ; 
  6343.         incr ( exbufxptr ) ; 
  6344.         tokenstarting = true ; 
  6345.       } 
  6346.       break ; 
  6347.     case 4 : 
  6348.       {
  6349.         if ( ( ! tokenstarting ) ) 
  6350.         namesepchar [ numtokens ] = exbuf [ exbufxptr ] ; 
  6351.         incr ( exbufxptr ) ; 
  6352.         tokenstarting = true ; 
  6353.       } 
  6354.       break ; 
  6355.       default: 
  6356.       {
  6357.         if ( ( tokenstarting ) ) 
  6358.         {
  6359.           nametok [ numtokens ] = namebfptr ; 
  6360.           incr ( numtokens ) ; 
  6361.         } 
  6362.         svbuffer [ namebfptr ] = exbuf [ exbufxptr ] ; 
  6363.         incr ( namebfptr ) ; 
  6364.         incr ( exbufxptr ) ; 
  6365.         tokenstarting = false ; 
  6366.       } 
  6367.       break ; 
  6368.     } 
  6369.     break ; 
  6370.       } 
  6371.       nametok [ numtokens ] = namebfptr ; 
  6372.     } 
  6373.     {
  6374.       if ( ( numcommas == 0 ) ) 
  6375.       {
  6376.     firststart = 0 ; 
  6377.     lastend = numtokens ; 
  6378.     jrend = lastend ; 
  6379.     {
  6380.       vonstart = 0 ; 
  6381.       while ( ( vonstart < lastend - 1 ) ) {
  6382.           
  6383.         namebfptr = nametok [ vonstart ] ; 
  6384.         namebfxptr = nametok [ vonstart + 1 ] ; 
  6385.         if ( ( vontokenfound () ) ) 
  6386.         {
  6387.           vonnameendsandlastna () ; 
  6388.           goto lab52 ; 
  6389.         } 
  6390.         incr ( vonstart ) ; 
  6391.       } 
  6392.       while ( ( vonstart > 0 ) ) {
  6393.           
  6394.         if ( ( ( lexclass [ namesepchar [ vonstart ] ] != 4 ) || ( 
  6395.         namesepchar [ vonstart ] == 126 ) ) ) 
  6396.         goto lab17 ; 
  6397.         decr ( vonstart ) ; 
  6398.       } 
  6399.       lab17: vonend = vonstart ; 
  6400.       lab52: firstend = vonstart ; 
  6401.     } 
  6402.       } 
  6403.       else if ( ( numcommas == 1 ) ) 
  6404.       {
  6405.     vonstart = 0 ; 
  6406.     lastend = comma1 ; 
  6407.     jrend = lastend ; 
  6408.     firststart = jrend ; 
  6409.     firstend = numtokens ; 
  6410.     vonnameendsandlastna () ; 
  6411.       } 
  6412.       else if ( ( numcommas == 2 ) ) 
  6413.       {
  6414.     vonstart = 0 ; 
  6415.     lastend = comma1 ; 
  6416.     jrend = comma2 ; 
  6417.     firststart = jrend ; 
  6418.     firstend = numtokens ; 
  6419.     vonnameendsandlastna () ; 
  6420.       } 
  6421.       else {
  6422.       
  6423.     {
  6424.       (void) ReverseFPuts( logfile ,  "Illegal number of comma,s" ) ; 
  6425.       (void) FPrintFStdErr(  "Illegal number of comma,s" ) ; 
  6426.     } 
  6427.     printconfusion () ; 
  6428.     longjmp(jmp9998,1) ; 
  6429.       } 
  6430.     } 
  6431.     exbuflength = 0 ; 
  6432.     addbufpool ( poplit1 ) ; 
  6433.     figureouttheformatte () ; 
  6434.     addpoolbufandpush () ; 
  6435.   } 
  6436.  
  6437. }
  6438. void xinttochr (void) {
  6439.     poplitstk ( poplit1 , poptyp1 ) ; 
  6440.   if ( ( poptyp1 != 0 ) ) 
  6441.   {
  6442.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  6443.     pushlitstk ( snull , 1 ) ; 
  6444.   } 
  6445.   else if ( ( ( poplit1 < 0 ) || ( poplit1 > 127 ) ) ) 
  6446.   {
  6447.     {
  6448.       {
  6449.     (void) FPrintF( logfile , "%ld%s",  (long)poplit1 , " isn't valid ASCII" ) ; 
  6450.     (void) FPrintFStdErr( "%ld%s",  (long)poplit1 , " isn't valid ASCII" ) ; 
  6451.       } 
  6452.       bstexwarnprint () ; 
  6453.     } 
  6454.     pushlitstk ( snull , 1 ) ; 
  6455.   } 
  6456.   else {
  6457.       
  6458.     {
  6459.       if ( ( poolptr + 1 > poolsize ) ) 
  6460.       pooloverflow () ; 
  6461.     } 
  6462.     {
  6463.       strpool [ poolptr ] = poplit1 ; 
  6464.       incr ( poolptr ) ; 
  6465.     } 
  6466.     pushlitstk ( makestring () , 1 ) ; 
  6467.   } 
  6468.  
  6469.  
  6470. }
  6471. void xinttostr (void) {
  6472.     poplitstk ( poplit1 , poptyp1 ) ; 
  6473.   if ( ( poptyp1 != 0 ) ) 
  6474.   {
  6475.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  6476.     pushlitstk ( snull , 1 ) ; 
  6477.   } 
  6478.   else {
  6479.       
  6480.     inttoASCII ( poplit1 , exbuf , 0 , exbuflength ) ; 
  6481.     addpoolbufandpush () ; 
  6482.   } 
  6483.  
  6484.  
  6485. }
  6486. void xmissing (void) {
  6487.     poplitstk ( poplit1 , poptyp1 ) ; 
  6488.   if ( ( ! messwithentries ) ) 
  6489.   bstcantmesswithentri () ; 
  6490.   else if ( ( ( poptyp1 != 1 ) && ( poptyp1 != 3 ) ) ) 
  6491.   {
  6492.     if ( ( poptyp1 != 4 ) ) 
  6493.     {
  6494.       printstklit ( poplit1 , poptyp1 ) ; 
  6495.       {
  6496.     {
  6497.       (void) ReverseFPuts( logfile ,  ", not a string or missing field," ) ; 
  6498.       (void) FPrintFStdErr(  ", not a string or missing field," ) ; 
  6499.     } 
  6500.     bstexwarnprint () ; 
  6501.       } 
  6502.     } 
  6503.     pushlitstk ( 0 , 0 ) ; 
  6504.   } 
  6505.   else if ( ( poptyp1 == 3 ) ) 
  6506.   pushlitstk ( 1 , 0 ) ; 
  6507.   else pushlitstk ( 0 , 0 ) ; 
  6508.  
  6509.  
  6510. }
  6511. void xnumnames (void) {
  6512.     poplitstk ( poplit1 , poptyp1 ) ; 
  6513.   if ( ( poptyp1 != 1 ) ) 
  6514.   {
  6515.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6516.     pushlitstk ( 0 , 0 ) ; 
  6517.   } 
  6518.   else {
  6519.       
  6520.     exbuflength = 0 ; 
  6521.     addbufpool ( poplit1 ) ; 
  6522.     {
  6523.       exbufptr = 0 ; 
  6524.       numnames = 0 ; 
  6525.       while ( ( exbufptr < exbuflength ) ) {
  6526.       
  6527.     namescanforand ( poplit1 ) ; 
  6528.     incr ( numnames ) ; 
  6529.       } 
  6530.     } 
  6531.     pushlitstk ( numnames , 0 ) ; 
  6532.   } 
  6533.  
  6534.  
  6535. }
  6536. void xpreamble (void) {
  6537.     exbuflength = 0 ; 
  6538.   preambleptr = 0 ; 
  6539.   while ( ( preambleptr < numpreamblestrings ) ) {
  6540.       
  6541.     addbufpool ( spreamble [ preambleptr ] ) ; 
  6542.     incr ( preambleptr ) ; 
  6543.   } 
  6544.   addpoolbufandpush () ; 
  6545.  
  6546.  
  6547. }
  6548. void xpurify (void) {
  6549.     poplitstk ( poplit1 , poptyp1 ) ; 
  6550.   if ( ( poptyp1 != 1 ) ) 
  6551.   {
  6552.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6553.     pushlitstk ( snull , 1 ) ; 
  6554.   } 
  6555.   else {
  6556.       
  6557.     exbuflength = 0 ; 
  6558.     addbufpool ( poplit1 ) ; 
  6559.     {
  6560.       bracelevel = 0 ; 
  6561.       exbufxptr = 0 ; 
  6562.       exbufptr = 0 ; 
  6563.       while ( ( exbufptr < exbuflength ) ) {
  6564.       
  6565.     switch ( ( lexclass [ exbuf [ exbufptr ] ] ) ) 
  6566.     {case 1 : 
  6567.     case 4 : 
  6568.       {
  6569.         exbuf [ exbufxptr ] = 32 ; 
  6570.         incr ( exbufxptr ) ; 
  6571.       } 
  6572.       break ; 
  6573.     case 2 : 
  6574.     case 3 : 
  6575.       {
  6576.         exbuf [ exbufxptr ] = exbuf [ exbufptr ] ; 
  6577.         incr ( exbufxptr ) ; 
  6578.       } 
  6579.       break ; 
  6580.       default: 
  6581.       if ( ( exbuf [ exbufptr ] == 123 ) ) 
  6582.       {
  6583.         incr ( bracelevel ) ; 
  6584.         if ( ( ( bracelevel == 1 ) && ( exbufptr + 1 < exbuflength ) ) ) 
  6585.         if ( ( exbuf [ exbufptr + 1 ] == 92 ) ) 
  6586.         {
  6587.           incr ( exbufptr ) ; 
  6588.           while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) ) ) {
  6589.           
  6590.         incr ( exbufptr ) ; 
  6591.         exbufyptr = exbufptr ; 
  6592.         while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  6593.         exbufptr ] ] == 2 ) ) ) incr ( exbufptr ) ; 
  6594.         controlseqloc = strlookup ( exbuf , exbufyptr , exbufptr - 
  6595.         exbufyptr , 14 , false ) ; 
  6596.         if ( ( hashfound ) ) 
  6597.         {
  6598.           exbuf [ exbufxptr ] = exbuf [ exbufyptr ] ; 
  6599.           incr ( exbufxptr ) ; 
  6600.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  6601.           {case 2 : 
  6602.           case 3 : 
  6603.           case 4 : 
  6604.           case 5 : 
  6605.           case 12 : 
  6606.             {
  6607.               exbuf [ exbufxptr ] = exbuf [ exbufyptr + 1 ] ; 
  6608.               incr ( exbufxptr ) ; 
  6609.             } 
  6610.             break ; 
  6611.             default: 
  6612.             ; 
  6613.             break ; 
  6614.           } 
  6615.         } 
  6616.         while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) && 
  6617.         ( exbuf [ exbufptr ] != 92 ) ) ) {
  6618.             
  6619.           switch ( ( lexclass [ exbuf [ exbufptr ] ] ) ) 
  6620.           {case 2 : 
  6621.           case 3 : 
  6622.             {
  6623.               exbuf [ exbufxptr ] = exbuf [ exbufptr ] ; 
  6624.               incr ( exbufxptr ) ; 
  6625.             } 
  6626.             break ; 
  6627.             default: 
  6628.             if ( ( exbuf [ exbufptr ] == 125 ) ) 
  6629.             decr ( bracelevel ) ; 
  6630.             else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  6631.             incr ( bracelevel ) ; 
  6632.             break ; 
  6633.           } 
  6634.           incr ( exbufptr ) ; 
  6635.         } 
  6636.           } 
  6637.           decr ( exbufptr ) ; 
  6638.         } 
  6639.       } 
  6640.       else if ( ( exbuf [ exbufptr ] == 125 ) ) 
  6641.       if ( ( bracelevel > 0 ) ) 
  6642.       decr ( bracelevel ) ; 
  6643.       break ; 
  6644.     } 
  6645.     incr ( exbufptr ) ; 
  6646.       } 
  6647.       exbuflength = exbufxptr ; 
  6648.     } 
  6649.     addpoolbufandpush () ; 
  6650.   } 
  6651.  
  6652.  
  6653. }
  6654. void xquote (void) {
  6655.     { 
  6656.     if ( ( poolptr + 1 > poolsize ) ) 
  6657.     pooloverflow () ; 
  6658.   } 
  6659.   {
  6660.     strpool [ poolptr ] = 34 ; 
  6661.     incr ( poolptr ) ; 
  6662.   } 
  6663.   pushlitstk ( makestring () , 1 ) ; 
  6664.  
  6665.  
  6666. }
  6667. void xsubstring (void) {
  6668.     /* 10 */ poplitstk ( poplit1 , poptyp1 ) ; 
  6669.   poplitstk ( poplit2 , poptyp2 ) ; 
  6670.   poplitstk ( poplit3 , poptyp3 ) ; 
  6671.   if ( ( poptyp1 != 0 ) ) 
  6672.   {
  6673.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  6674.     pushlitstk ( snull , 1 ) ; 
  6675.   } 
  6676.   else if ( ( poptyp2 != 0 ) ) 
  6677.   {
  6678.     printwrongstklit ( poplit2 , poptyp2 , 0 ) ; 
  6679.     pushlitstk ( snull , 1 ) ; 
  6680.   } 
  6681.   else if ( ( poptyp3 != 1 ) ) 
  6682.   {
  6683.     printwrongstklit ( poplit3 , poptyp3 , 1 ) ; 
  6684.     pushlitstk ( snull , 1 ) ; 
  6685.   } 
  6686.   else {
  6687.       
  6688.     splength = ( strstart [ poplit3 + 1 ] - strstart [ poplit3 ] ) ; 
  6689.     if ( ( poplit1 >= splength ) ) 
  6690.     if ( ( ( poplit2 == 1 ) || ( poplit2 == -1 ) ) ) 
  6691.     {
  6692.       {
  6693.     if ( ( litstack [ litstkptr ] >= cmdstrptr ) ) 
  6694.     {
  6695.       incr ( strptr ) ; 
  6696.       poolptr = strstart [ strptr ] ; 
  6697.     } 
  6698.     incr ( litstkptr ) ; 
  6699.       } 
  6700.       goto lab10 ; 
  6701.     } 
  6702.     if ( ( ( poplit1 <= 0 ) || ( poplit2 == 0 ) || ( poplit2 > splength ) || ( 
  6703.     poplit2 < - (integer) splength ) ) ) 
  6704.     {
  6705.       pushlitstk ( snull , 1 ) ; 
  6706.       goto lab10 ; 
  6707.     } 
  6708.     else {
  6709.     
  6710.       if ( ( poplit2 > 0 ) ) 
  6711.       {
  6712.     if ( ( poplit1 > splength - ( poplit2 - 1 ) ) ) 
  6713.     poplit1 = splength - ( poplit2 - 1 ) ; 
  6714.     spptr = strstart [ poplit3 ] + ( poplit2 - 1 ) ; 
  6715.     spend = spptr + poplit1 ; 
  6716.     if ( ( poplit2 == 1 ) ) 
  6717.     if ( ( poplit3 >= cmdstrptr ) ) 
  6718.     {
  6719.       strstart [ poplit3 + 1 ] = spend ; 
  6720.       {
  6721.         incr ( strptr ) ; 
  6722.         poolptr = strstart [ strptr ] ; 
  6723.       } 
  6724.       incr ( litstkptr ) ; 
  6725.       goto lab10 ; 
  6726.     } 
  6727.       } 
  6728.       else {
  6729.       
  6730.     poplit2 = - (integer) poplit2 ; 
  6731.     if ( ( poplit1 > splength - ( poplit2 - 1 ) ) ) 
  6732.     poplit1 = splength - ( poplit2 - 1 ) ; 
  6733.     spend = strstart [ poplit3 + 1 ] - ( poplit2 - 1 ) ; 
  6734.     spptr = spend - poplit1 ; 
  6735.       } 
  6736.       while ( ( spptr < spend ) ) {
  6737.       
  6738.     {
  6739.       strpool [ poolptr ] = strpool [ spptr ] ; 
  6740.       incr ( poolptr ) ; 
  6741.     } 
  6742.     incr ( spptr ) ; 
  6743.       } 
  6744.       pushlitstk ( makestring () , 1 ) ; 
  6745.     } 
  6746.   } 
  6747.   lab10: ; 
  6748.  
  6749.  
  6750. }
  6751. void xswap (void) {
  6752.     poplitstk ( poplit1 , poptyp1 ) ; 
  6753.   poplitstk ( poplit2 , poptyp2 ) ; 
  6754.   if ( ( ( poptyp1 != 1 ) || ( poplit1 < cmdstrptr ) ) ) 
  6755.   {
  6756.     pushlitstk ( poplit1 , poptyp1 ) ; 
  6757.     if ( ( ( poptyp2 == 1 ) && ( poplit2 >= cmdstrptr ) ) ) 
  6758.     {
  6759.       incr ( strptr ) ; 
  6760.       poolptr = strstart [ strptr ] ; 
  6761.     } 
  6762.     pushlitstk ( poplit2 , poptyp2 ) ; 
  6763.   } 
  6764.   else if ( ( ( poptyp2 != 1 ) || ( poplit2 < cmdstrptr ) ) ) 
  6765.   {
  6766.     {
  6767.       incr ( strptr ) ; 
  6768.       poolptr = strstart [ strptr ] ; 
  6769.     } 
  6770.     pushlitstk ( poplit1 , 1 ) ; 
  6771.     pushlitstk ( poplit2 , poptyp2 ) ; 
  6772.   } 
  6773.   else {
  6774.       
  6775.     exbuflength = 0 ; 
  6776.     addbufpool ( poplit2 ) ; 
  6777.     spptr = strstart [ poplit1 ] ; 
  6778.     spend = strstart [ poplit1 + 1 ] ; 
  6779.     while ( ( spptr < spend ) ) {
  6780.     
  6781.       {
  6782.     strpool [ poolptr ] = strpool [ spptr ] ; 
  6783.     incr ( poolptr ) ; 
  6784.       } 
  6785.       incr ( spptr ) ; 
  6786.     } 
  6787.     pushlitstk ( makestring () , 1 ) ; 
  6788.     addpoolbufandpush () ; 
  6789.   } 
  6790.  
  6791.  
  6792. }
  6793. void xtextlength (void) {
  6794.     poplitstk ( poplit1 , poptyp1 ) ; 
  6795.   if ( ( poptyp1 != 1 ) ) 
  6796.   {
  6797.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6798.     pushlitstk ( snull , 1 ) ; 
  6799.   } 
  6800.   else {
  6801.       
  6802.     numtextchars = 0 ; 
  6803.     {
  6804.       spptr = strstart [ poplit1 ] ; 
  6805.       spend = strstart [ poplit1 + 1 ] ; 
  6806.       spbracelevel = 0 ; 
  6807.       while ( ( spptr < spend ) ) {
  6808.       
  6809.     incr ( spptr ) ; 
  6810.     if ( ( strpool [ spptr - 1 ] == 123 ) ) 
  6811.     {
  6812.       incr ( spbracelevel ) ; 
  6813.       if ( ( ( spbracelevel == 1 ) && ( spptr < spend ) ) ) 
  6814.       if ( ( strpool [ spptr ] == 92 ) ) 
  6815.       {
  6816.         incr ( spptr ) ; 
  6817.         while ( ( ( spptr < spend ) && ( spbracelevel > 0 ) ) ) {
  6818.         
  6819.           if ( ( strpool [ spptr ] == 125 ) ) 
  6820.           decr ( spbracelevel ) ; 
  6821.           else if ( ( strpool [ spptr ] == 123 ) ) 
  6822.           incr ( spbracelevel ) ; 
  6823.           incr ( spptr ) ; 
  6824.         } 
  6825.         incr ( numtextchars ) ; 
  6826.       } 
  6827.     } 
  6828.     else if ( ( strpool [ spptr - 1 ] == 125 ) ) 
  6829.     {
  6830.       if ( ( spbracelevel > 0 ) ) 
  6831.       decr ( spbracelevel ) ; 
  6832.     } 
  6833.     else incr ( numtextchars ) ; 
  6834.       } 
  6835.     } 
  6836.     pushlitstk ( numtextchars , 0 ) ; 
  6837.   } 
  6838.  
  6839.  
  6840. }
  6841. void xtextprefix (void) {
  6842.     /* 10 */ poplitstk ( poplit1 , poptyp1 ) ; 
  6843.   poplitstk ( poplit2 , poptyp2 ) ; 
  6844.   if ( ( poptyp1 != 0 ) ) 
  6845.   {
  6846.     printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  6847.     pushlitstk ( snull , 1 ) ; 
  6848.   } 
  6849.   else if ( ( poptyp2 != 1 ) ) 
  6850.   {
  6851.     printwrongstklit ( poplit2 , poptyp2 , 1 ) ; 
  6852.     pushlitstk ( snull , 1 ) ; 
  6853.   } 
  6854.   else if ( ( poplit1 <= 0 ) ) 
  6855.   {
  6856.     pushlitstk ( snull , 1 ) ; 
  6857.     goto lab10 ; 
  6858.   } 
  6859.   else {
  6860.       
  6861.     spptr = strstart [ poplit2 ] ; 
  6862.     spend = strstart [ poplit2 + 1 ] ; 
  6863.     {
  6864.       numtextchars = 0 ; 
  6865.       spbracelevel = 0 ; 
  6866.       spxptr1 = spptr ; 
  6867.       while ( ( ( spxptr1 < spend ) && ( numtextchars < poplit1 ) ) ) {
  6868.       
  6869.     incr ( spxptr1 ) ; 
  6870.     if ( ( strpool [ spxptr1 - 1 ] == 123 ) ) 
  6871.     {
  6872.       incr ( spbracelevel ) ; 
  6873.       if ( ( ( spbracelevel == 1 ) && ( spxptr1 < spend ) ) ) 
  6874.       if ( ( strpool [ spxptr1 ] == 92 ) ) 
  6875.       {
  6876.         incr ( spxptr1 ) ; 
  6877.         while ( ( ( spxptr1 < spend ) && ( spbracelevel > 0 ) ) ) {
  6878.         
  6879.           if ( ( strpool [ spxptr1 ] == 125 ) ) 
  6880.           decr ( spbracelevel ) ; 
  6881.           else if ( ( strpool [ spxptr1 ] == 123 ) ) 
  6882.           incr ( spbracelevel ) ; 
  6883.           incr ( spxptr1 ) ; 
  6884.         } 
  6885.         incr ( numtextchars ) ; 
  6886.       } 
  6887.     } 
  6888.     else if ( ( strpool [ spxptr1 - 1 ] == 125 ) ) 
  6889.     {
  6890.       if ( ( spbracelevel > 0 ) ) 
  6891.       decr ( spbracelevel ) ; 
  6892.     } 
  6893.     else incr ( numtextchars ) ; 
  6894.       } 
  6895.       spend = spxptr1 ; 
  6896.     } 
  6897.     if ( ( poplit2 >= cmdstrptr ) ) 
  6898.     poolptr = spend ; 
  6899.     else while ( ( spptr < spend ) ) {
  6900.     
  6901.       {
  6902.     strpool [ poolptr ] = strpool [ spptr ] ; 
  6903.     incr ( poolptr ) ; 
  6904.       } 
  6905.       incr ( spptr ) ; 
  6906.     } 
  6907.     while ( ( spbracelevel > 0 ) ) {
  6908.     
  6909.       {
  6910.     strpool [ poolptr ] = 125 ; 
  6911.     incr ( poolptr ) ; 
  6912.       } 
  6913.       decr ( spbracelevel ) ; 
  6914.     } 
  6915.     pushlitstk ( makestring () , 1 ) ; 
  6916.   } 
  6917.   lab10: ; 
  6918.  
  6919.  
  6920. }
  6921. void xtype (void) {
  6922.     if ( ( ! messwithentries ) ) 
  6923.   bstcantmesswithentri () ; 
  6924.   else if ( ( ( typelist [ citeptr ] == 5001 ) || ( typelist [ citeptr ] == 0 
  6925.   ) ) ) 
  6926.   pushlitstk ( snull , 1 ) ; 
  6927.   else pushlitstk ( hashtext [ typelist [ citeptr ] ] , 1 ) ; 
  6928.  
  6929.  
  6930. }
  6931. void xwarning (void) {
  6932.     poplitstk ( poplit1 , poptyp1 ) ; 
  6933.   if ( ( poptyp1 != 1 ) ) 
  6934.   printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6935.   else {
  6936.       
  6937.     {
  6938.       (void) ReverseFPuts( logfile ,  "Warning--" ) ; 
  6939.       (void) FPrintFStdErr(  "Warning--" ) ; 
  6940.     } 
  6941.     printlit ( poplit1 , poptyp1 ) ; 
  6942.     markwarning () ; 
  6943.   } 
  6944.  
  6945.  
  6946. }
  6947. void xwidth (void) {
  6948.     poplitstk ( poplit1 , poptyp1 ) ; 
  6949.   if ( ( poptyp1 != 1 ) ) 
  6950.   {
  6951.     printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  6952.     pushlitstk ( 0 , 0 ) ; 
  6953.   } 
  6954.   else {
  6955.       
  6956.     exbuflength = 0 ; 
  6957.     addbufpool ( poplit1 ) ; 
  6958.     bibstringwidth = 0 ; 
  6959.     {
  6960.       bracelevel = 0 ; 
  6961.       exbufptr = 0 ; 
  6962.       while ( ( exbufptr < exbuflength ) ) {
  6963.       
  6964.     if ( ( exbuf [ exbufptr ] == 123 ) ) 
  6965.     {
  6966.       incr ( bracelevel ) ; 
  6967.       if ( ( ( bracelevel == 1 ) && ( exbufptr + 1 < exbuflength ) ) ) 
  6968.       if ( ( exbuf [ exbufptr + 1 ] == 92 ) ) 
  6969.       {
  6970.         incr ( exbufptr ) ; 
  6971.         while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) ) ) {
  6972.         
  6973.           incr ( exbufptr ) ; 
  6974.           exbufxptr = exbufptr ; 
  6975.           while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  6976.           exbufptr ] ] == 2 ) ) ) incr ( exbufptr ) ; 
  6977.           if ( ( ( exbufptr < exbuflength ) && ( exbufptr == exbufxptr ) ) 
  6978.           ) 
  6979.           incr ( exbufptr ) ; 
  6980.           else {
  6981.           
  6982.         controlseqloc = strlookup ( exbuf , exbufxptr , exbufptr - 
  6983.         exbufxptr , 14 , false ) ; 
  6984.         if ( ( hashfound ) ) 
  6985.         {
  6986.           switch ( ( ilkinfo [ controlseqloc ] ) ) 
  6987.           {case 12 : 
  6988.             bibstringwidth = bibstringwidth + 500 ; 
  6989.             break ; 
  6990.           case 4 : 
  6991.             bibstringwidth = bibstringwidth + 722 ; 
  6992.             break ; 
  6993.           case 2 : 
  6994.             bibstringwidth = bibstringwidth + 778 ; 
  6995.             break ; 
  6996.           case 5 : 
  6997.             bibstringwidth = bibstringwidth + 903 ; 
  6998.             break ; 
  6999.           case 3 : 
  7000.             bibstringwidth = bibstringwidth + 1014 ; 
  7001.             break ; 
  7002.             default: 
  7003.             bibstringwidth = bibstringwidth + charwidth [ exbuf [ exbufxptr 
  7004.             ] ] ; 
  7005.             break ; 
  7006.           } 
  7007.         } 
  7008.           } 
  7009.           while ( ( ( exbufptr < exbuflength ) && ( lexclass [ exbuf [ 
  7010.           exbufptr ] ] == 1 ) ) ) incr ( exbufptr ) ; 
  7011.           while ( ( ( exbufptr < exbuflength ) && ( bracelevel > 0 ) && ( 
  7012.           exbuf [ exbufptr ] != 92 ) ) ) {
  7013.           
  7014.         if ( ( exbuf [ exbufptr ] == 125 ) ) 
  7015.         decr ( bracelevel ) ; 
  7016.         else if ( ( exbuf [ exbufptr ] == 123 ) ) 
  7017.         incr ( bracelevel ) ; 
  7018.         else bibstringwidth = bibstringwidth + charwidth [ exbuf [ exbufptr 
  7019.         ] ] ; 
  7020.         incr ( exbufptr ) ; 
  7021.           } 
  7022.         } 
  7023.         decr ( exbufptr ) ; 
  7024.       } 
  7025.       else bibstringwidth = bibstringwidth + charwidth [ 123 ] ; 
  7026.       else bibstringwidth = bibstringwidth + charwidth [ 123 ] ; 
  7027.     } 
  7028.     else if ( ( exbuf [ exbufptr ] == 125 ) ) 
  7029.     {
  7030.       decrbracelevel ( poplit1 ) ; 
  7031.       bibstringwidth = bibstringwidth + charwidth [ 125 ] ; 
  7032.     } 
  7033.     else bibstringwidth = bibstringwidth + charwidth [ exbuf [ exbufptr ] ] ; 
  7034.     incr ( exbufptr ) ; 
  7035.       } 
  7036.       checkbracelevel ( poplit1 ) ; 
  7037.     } 
  7038.     pushlitstk ( bibstringwidth , 0 ) ; 
  7039.   } 
  7040.  
  7041.  
  7042. }
  7043. void xwrite (void) {
  7044.     poplitstk ( poplit1 , poptyp1 ) ; 
  7045.   if ( ( poptyp1 != 1 ) ) 
  7046.   printwrongstklit ( poplit1 , poptyp1 , 1 ) ; 
  7047.   else addoutpool ( poplit1 ) ; 
  7048. #include "BibTeX.h"
  7049. #include "BibTeX.p"
  7050. #include "globals.h"
  7051. #include "coerce.h"
  7052.  
  7053. void
  7054. #ifdef STDC
  7055. zexecutefn (hashloc exfnloc ) 
  7056. #else
  7057. zexecutefn ( exfnloc ) 
  7058. hashloc exfnloc ; 
  7059. #endif
  7060. {/* 51 */ integer rpoplt1, rpoplt2  ; 
  7061.   stktype rpoptp1, rpoptp2  ; 
  7062.   wizfnloc wizptr  ; 
  7063.     ;
  7064. #ifdef TRACE
  7065.   {
  7066.     (void) ReverseFPuts( logfile ,  "execute_fn `" ) ; 
  7067.   } 
  7068.   {
  7069.     outpoolstr ( logfile , hashtext [ exfnloc ] ) ; 
  7070.   } 
  7071.   {
  7072.     (void) FPrintF( logfile , "%c\r",  '\'' ) ; 
  7073.   } 
  7074. #endif /* TRACE */
  7075.   switch ( ( fntype [ exfnloc ] ) ) 
  7076.   {case 0 : 
  7077.     {
  7078.     ;
  7079. #ifdef STAT
  7080.       incr ( executioncount [ ilkinfo [ exfnloc ] ] ) ; 
  7081. #endif /* STAT */
  7082.       switch ( ( ilkinfo [ exfnloc ] ) ) 
  7083.       {case 0 : 
  7084.     xequals () ; 
  7085.     break ; 
  7086.       case 1 : 
  7087.     xgreaterthan () ; 
  7088.     break ; 
  7089.       case 2 : 
  7090.     xlessthan () ; 
  7091.     break ; 
  7092.       case 3 : 
  7093.     xplus () ; 
  7094.     break ; 
  7095.       case 4 : 
  7096.     xminus () ; 
  7097.     break ; 
  7098.       case 5 : 
  7099.     xconcatenate () ; 
  7100.     break ; 
  7101.       case 6 : 
  7102.     xgets () ; 
  7103.     break ; 
  7104.       case 7 : 
  7105.     xaddperiod () ; 
  7106.     break ; 
  7107.       case 8 : 
  7108.     {
  7109.       if ( ( ! messwithentries ) ) 
  7110.       bstcantmesswithentri () ; 
  7111.       else if ( ( typelist [ citeptr ] == 5001 ) ) 
  7112.       executefn ( bdefault ) ; 
  7113.       else if ( ( typelist [ citeptr ] == 0 ) ) 
  7114.       ; 
  7115.       else executefn ( typelist [ citeptr ] ) ; 
  7116.     } 
  7117.     break ; 
  7118.       case 9 : 
  7119.     xchangecase () ; 
  7120.     break ; 
  7121.       case 10 : 
  7122.     xchrtoint () ; 
  7123.     break ; 
  7124.       case 11 : 
  7125.     xcite () ; 
  7126.     break ; 
  7127.       case 12 : 
  7128.     xduplicate () ; 
  7129.     break ; 
  7130.       case 13 : 
  7131.     xempty () ; 
  7132.     break ; 
  7133.       case 14 : 
  7134.     xformatname () ; 
  7135.     break ; 
  7136.       case 15 : 
  7137.     {
  7138.       poplitstk ( poplit1 , poptyp1 ) ; 
  7139.       poplitstk ( poplit2 , poptyp2 ) ; 
  7140.       poplitstk ( poplit3 , poptyp3 ) ; 
  7141.       if ( ( poptyp1 != 2 ) ) 
  7142.       printwrongstklit ( poplit1 , poptyp1 , 2 ) ; 
  7143.       else if ( ( poptyp2 != 2 ) ) 
  7144.       printwrongstklit ( poplit2 , poptyp2 , 2 ) ; 
  7145.       else if ( ( poptyp3 != 0 ) ) 
  7146.       printwrongstklit ( poplit3 , poptyp3 , 0 ) ; 
  7147.       else if ( ( poplit3 > 0 ) ) 
  7148.       executefn ( poplit2 ) ; 
  7149.       else executefn ( poplit1 ) ; 
  7150.     } 
  7151.     break ; 
  7152.       case 16 : 
  7153.     xinttochr () ; 
  7154.     break ; 
  7155.       case 17 : 
  7156.     xinttostr () ; 
  7157.     break ; 
  7158.       case 18 : 
  7159.     xmissing () ; 
  7160.     break ; 
  7161.       case 19 : 
  7162.     {
  7163.       outputbblline () ; 
  7164.     } 
  7165.     break ; 
  7166.       case 20 : 
  7167.     xnumnames () ; 
  7168.     break ; 
  7169.       case 21 : 
  7170.     {
  7171.       poplitstk ( poplit1 , poptyp1 ) ; 
  7172.     } 
  7173.     break ; 
  7174.       case 22 : 
  7175.     xpreamble () ; 
  7176.     break ; 
  7177.       case 23 : 
  7178.     xpurify () ; 
  7179.     break ; 
  7180.       case 24 : 
  7181.     xquote () ; 
  7182.     break ; 
  7183.       case 25 : 
  7184.     {
  7185.       ; 
  7186.     } 
  7187.     break ; 
  7188.       case 26 : 
  7189.     {
  7190.       popwholestack () ; 
  7191.     } 
  7192.     break ; 
  7193.       case 27 : 
  7194.     xsubstring () ; 
  7195.     break ; 
  7196.       case 28 : 
  7197.     xswap () ; 
  7198.     break ; 
  7199.       case 29 : 
  7200.     xtextlength () ; 
  7201.     break ; 
  7202.       case 30 : 
  7203.     xtextprefix () ; 
  7204.     break ; 
  7205.       case 31 : 
  7206.     {
  7207.       poptopandprint () ; 
  7208.     } 
  7209.     break ; 
  7210.       case 32 : 
  7211.     xtype () ; 
  7212.     break ; 
  7213.       case 33 : 
  7214.     xwarning () ; 
  7215.     break ; 
  7216.       case 34 : 
  7217.     {
  7218.       poplitstk ( rpoplt1 , rpoptp1 ) ; 
  7219.       poplitstk ( rpoplt2 , rpoptp2 ) ; 
  7220.       if ( ( rpoptp1 != 2 ) ) 
  7221.       printwrongstklit ( rpoplt1 , rpoptp1 , 2 ) ; 
  7222.       else if ( ( rpoptp2 != 2 ) ) 
  7223.       printwrongstklit ( rpoplt2 , rpoptp2 , 2 ) ; 
  7224.       else while ( true ) {
  7225.           
  7226.         executefn ( rpoplt2 ) ; 
  7227.         poplitstk ( poplit1 , poptyp1 ) ; 
  7228.         if ( ( poptyp1 != 0 ) ) 
  7229.         {
  7230.           printwrongstklit ( poplit1 , poptyp1 , 0 ) ; 
  7231.           goto lab51 ; 
  7232.         } 
  7233.         else if ( ( poplit1 > 0 ) ) 
  7234.         executefn ( rpoplt1 ) ; 
  7235.         else goto lab51 ; 
  7236.       } 
  7237.       lab51: ; 
  7238.     } 
  7239.     break ; 
  7240.       case 35 : 
  7241.     xwidth () ; 
  7242.     break ; 
  7243.       case 36 : 
  7244.     xwrite () ; 
  7245.     break ; 
  7246.     default: 
  7247.     {
  7248.       {
  7249.         (void) ReverseFPuts( logfile ,  "Unknown built-in function" ) ; 
  7250.         (void) FPrintFStdErr(  "Unknown built-in function" ) ; 
  7251.       } 
  7252.       printconfusion () ; 
  7253.       longjmp(jmp9998,1) ; 
  7254.     } 
  7255.     break ; 
  7256.       } 
  7257.     } 
  7258.     break ; 
  7259.   case 1 : 
  7260.     {
  7261.       wizptr = ilkinfo [ exfnloc ] ; 
  7262.       while ( ( wizfunctions [ wizptr ] != 5001 ) ) {
  7263.       
  7264.     if ( ( wizfunctions [ wizptr ] != 0 ) ) 
  7265.     executefn ( wizfunctions [ wizptr ] ) ; 
  7266.     else {
  7267.         
  7268.       incr ( wizptr ) ; 
  7269.       pushlitstk ( wizfunctions [ wizptr ] , 2 ) ; 
  7270.     } 
  7271.     incr ( wizptr ) ; 
  7272.       } 
  7273.     } 
  7274.     break ; 
  7275.   case 2 : 
  7276.     pushlitstk ( ilkinfo [ exfnloc ] , 0 ) ; 
  7277.     break ; 
  7278.   case 3 : 
  7279.     pushlitstk ( hashtext [ exfnloc ] , 1 ) ; 
  7280.     break ; 
  7281.   case 4 : 
  7282.     {
  7283.       if ( ( ! messwithentries ) ) 
  7284.       bstcantmesswithentri () ; 
  7285.       else {
  7286.       
  7287.     fieldptr = citeptr * numfields + ilkinfo [ exfnloc ] ; 
  7288.     if ( ( fieldinfo [ fieldptr ] == 0 ) ) 
  7289.     pushlitstk ( hashtext [ exfnloc ] , 3 ) ; 
  7290.     else pushlitstk ( fieldinfo [ fieldptr ] , 1 ) ; 
  7291.       } 
  7292.     } 
  7293.     break ; 
  7294.   case 5 : 
  7295.     {
  7296.       if ( ( ! messwithentries ) ) 
  7297.       bstcantmesswithentri () ; 
  7298.       else pushlitstk ( entryints [ citeptr * numentints + ilkinfo [ exfnloc ] 
  7299.       ] , 0 ) ; 
  7300.     } 
  7301.     break ; 
  7302.   case 6 : 
  7303.     {
  7304.       if ( ( ! messwithentries ) ) 
  7305.       bstcantmesswithentri () ; 
  7306.       else {
  7307.       
  7308.     strentptr = citeptr * numentstrs + ilkinfo [ exfnloc ] ; 
  7309.     exbufptr = 0 ; 
  7310.     while ( ( entrystrs [ strentptr ] [ exbufptr ] != 127 ) ) {
  7311.         
  7312.       exbuf [ exbufptr ] = entrystrs [ strentptr ] [ exbufptr ] ; 
  7313.       incr ( exbufptr ) ; 
  7314.     } 
  7315.     exbuflength = exbufptr ; 
  7316.     addpoolbufandpush () ; 
  7317.       } 
  7318.     } 
  7319.     break ; 
  7320.   case 7 : 
  7321.     pushlitstk ( ilkinfo [ exfnloc ] , 0 ) ; 
  7322.     break ; 
  7323.   case 8 : 
  7324.     {
  7325.       strglbptr = ilkinfo [ exfnloc ] ; 
  7326.       if ( ( glbstrptr [ strglbptr ] > 0 ) ) 
  7327.       pushlitstk ( glbstrptr [ strglbptr ] , 1 ) ; 
  7328.       else {
  7329.       
  7330.     {
  7331.       if ( ( poolptr + glbstrend [ strglbptr ] > poolsize ) ) 
  7332.       pooloverflow () ; 
  7333.     } 
  7334.     globchrptr = 0 ; 
  7335.     while ( ( globchrptr < glbstrend [ strglbptr ] ) ) {
  7336.         
  7337.       {
  7338.         strpool [ poolptr ] = globalstrs [ strglbptr ] [ globchrptr ] ; 
  7339.         incr ( poolptr ) ; 
  7340.       } 
  7341.       incr ( globchrptr ) ; 
  7342.     } 
  7343.     pushlitstk ( makestring () , 1 ) ; 
  7344.       } 
  7345.     } 
  7346.     break ; 
  7347.     default: 
  7348.     unknwnfunctionclassc () ; 
  7349.     break ; 
  7350.   } 
  7351.  
  7352.  
  7353. }
  7354. /* Vince changes here */
  7355. void getthetoplevelauxfil (void) {
  7356.     /* 41 46 */ while ( true ) { 
  7357.     
  7358.         // we have the aux-file already, so none of this:
  7359.         /*
  7360.             if ( ( gargc > 1 ) ) 
  7361.             auxnamelength = getcmdline ( nameoffile , 1024 ) ; 
  7362.             else {
  7363.                 
  7364.               (void) FPrintFStdErr(  "Please type input file name (no extension)--" ) ; 
  7365.               auxnamelength = 0 ; 
  7366.               while ( ( ! eoln ( stdin ) ) ) {
  7367.               
  7368.             if ( ( auxnamelength == 1024 ) ) 
  7369.             {
  7370.               readln ( stdin ) ; 
  7371.               {
  7372.                 samtoolongfilenamepr () ; 
  7373.                 goto lab46 ; 
  7374.               } 
  7375.             } 
  7376.             nameoffile [ auxnamelength ] = getc ( stdin ) ; 
  7377.             incr ( auxnamelength ) ; 
  7378.               } 
  7379.               
  7380.             } 
  7381.     */ //end of my cut-out
  7382.     
  7383.     
  7384.         //gAuxDesc is our top file.
  7385.         strncpy(nameoffile, aux_fn, 1024);
  7386.         // currently assume there is an extension
  7387.         auxnamelength = strlen(nameoffile);
  7388.         nameoffile[auxnamelength-4] = '\0';
  7389.         auxnamelength -= 4;
  7390.         
  7391.     {
  7392.       if ( ( ( auxnamelength + ( strstart [ sauxextension + 1 ] - strstart [ 
  7393.       sauxextension ] ) > 1024 ) || ( auxnamelength + ( strstart [ 
  7394.       slogextension + 1 ] - strstart [ slogextension ] ) > 1024 ) || ( 
  7395.       auxnamelength + ( strstart [ sbblextension + 1 ] - strstart [ 
  7396.       sbblextension ] ) > 1024 ) ) ) 
  7397.       {
  7398.     samtoolongfilenamepr () ; 
  7399.     goto lab46 ; 
  7400.       } 
  7401.       {
  7402.     namelength = auxnamelength ; 
  7403.     addextension ( sauxextension ) ;  
  7404.     auxptr = 0 ; 
  7405.     if ( ( ! aopenin ( auxfile [ auxptr ] ) ) ) 
  7406.     {
  7407.       samwrongfilenameprin () ; 
  7408.       goto lab46 ; 
  7409.     } 
  7410.     namelength = auxnamelength ; 
  7411.     addextension ( slogextension ) ; 
  7412.     if ( ( ! aopenout ( logfile ) ) ) 
  7413.     {
  7414.       samwrongfilenameprin () ; 
  7415.       goto lab46 ; 
  7416.     } 
  7417.     namelength = auxnamelength ; 
  7418.     addextension ( sbblextension ) ; 
  7419.     if ( ( ! aopenout ( bblfile ) ) ) 
  7420.     {
  7421.       samwrongfilenameprin () ; 
  7422.       goto lab46 ; 
  7423.     } 
  7424.       } 
  7425.       {
  7426.     namelength = auxnamelength ; 
  7427.     addextension ( sauxextension ) ; 
  7428.     nameptr = 1 ; 
  7429.     while ( ( nameptr <= namelength ) ) {
  7430.         
  7431.       buffer [ nameptr ] = xord [ nameoffile [ nameptr - 1 ] ] ; 
  7432.       incr ( nameptr ) ; 
  7433.     } 
  7434.     toplevstr = hashtext [ strlookup ( buffer , 1 , auxnamelength , 0 , 
  7435.     true ) ] ; 
  7436.     auxlist [ auxptr ] = hashtext [ strlookup ( buffer , 1 , namelength , 
  7437.     3 , true ) ] ; 
  7438.     if ( ( hashfound ) ) 
  7439.     {
  7440.     ;
  7441. #ifdef TRACE
  7442.       printauxname () ; 
  7443. #endif /* TRACE */
  7444.       {
  7445.         {
  7446.           (void) ReverseFPuts( logfile ,  "Already encountered auxiliary file" ) ; 
  7447.           (void) FPrintFStdErr(  "Already encountered auxiliary file" ) ; 
  7448.         } 
  7449.         printconfusion () ; 
  7450.         longjmp(jmp9998,1) ; 
  7451.       } 
  7452.     } 
  7453.     auxlnstack [ auxptr ] = 0 ; 
  7454.       } 
  7455.       goto lab41 ; 
  7456.     } 
  7457.     lab46: ;//gargc = 0 ; 
  7458.   } 
  7459.   lab41: ; 
  7460.  
  7461.  
  7462. }
  7463. void auxbibdatacommand (void) {
  7464.     /* 10 */ if ( ( bibseen ) ) 
  7465.   {
  7466.     auxerrillegalanother ( 0 ) ; 
  7467.     {
  7468.       auxerrprint () ; 
  7469.       goto lab10 ; 
  7470.     } 
  7471.   } 
  7472.   bibseen = true ; 
  7473.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  7474.       
  7475.     incr ( bufptr2 ) ; 
  7476.     if ( ( ! scan2white ( 125 , 44 ) ) ) 
  7477.     {
  7478.       auxerrnorightbracepr () ; 
  7479.       {
  7480.     auxerrprint () ; 
  7481.     goto lab10 ; 
  7482.       } 
  7483.     } 
  7484.     if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  7485.     {
  7486.       auxerrwhitespaceinar () ; 
  7487.       {
  7488.     auxerrprint () ; 
  7489.     goto lab10 ; 
  7490.       } 
  7491.     } 
  7492.     if ( ( ( last > bufptr2 + 1 ) && ( buffer [ bufptr2 ] == 125 ) ) ) 
  7493.     {
  7494.       auxerrstuffafterrigh () ; 
  7495.       {
  7496.     auxerrprint () ; 
  7497.     goto lab10 ; 
  7498.       } 
  7499.     } 
  7500.     {
  7501.       if ( ( bibptr == maxbibfiles ) ) 
  7502.       {
  7503.     printoverflow () ; 
  7504.     {
  7505.       (void) FPrintF( logfile , "%s%ld\r",  "number of database files " , (long)maxbibfiles ) ; 
  7506.       (void) FPrintFStdErr( "%s%ld\r",  "number of database files " , (long)maxbibfiles ) ; 
  7507.     } 
  7508.     longjmp(jmp9998,1) ; 
  7509.       } 
  7510.       biblist [ bibptr ] = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 
  7511.       - bufptr1 ) , 6 , true ) ] ; 
  7512.       if ( ( hashfound ) ) 
  7513.       {
  7514.     {
  7515.       (void) ReverseFPuts( logfile ,  "This database file appears more than once: " ) ; 
  7516.       (void) FPrintFStdErr(  "This database file appears more than once: " ) ; 
  7517.     } 
  7518.     printbibname () ; 
  7519.     {
  7520.       auxerrprint () ; 
  7521.       goto lab10 ; 
  7522.     } 
  7523.       } 
  7524.       startname ( biblist [ bibptr ] ) ; 
  7525.       addextension ( sbibextension ) ; 
  7526.       if ( ( ! aopenin ( bibfile [ bibptr ] ) ) ) 
  7527.       {
  7528.     addarea ( sbibarea ) ; 
  7529.     if ( ( ! aopenin ( bibfile [ bibptr ] ) ) ) 
  7530.     {
  7531.       {
  7532.         (void) ReverseFPuts( logfile ,  "I couldn't open database file " ) ; 
  7533.         (void) FPrintFStdErr(  "I couldn't open database file " ) ; 
  7534.       } 
  7535.       printbibname () ; 
  7536.       {
  7537.         auxerrprint () ; 
  7538.         goto lab10 ; 
  7539.       } 
  7540.     } 
  7541.       } 
  7542.     ;
  7543. #ifdef TRACE
  7544.       {
  7545.     outpoolstr ( logfile , biblist [ bibptr ] ) ; 
  7546.       } 
  7547.       {
  7548.     outpoolstr ( logfile , sbibextension ) ; 
  7549.       } 
  7550.       {
  7551.     (void) FPrintF( logfile , "%s\r",  " is a bibdata file" ) ; 
  7552.       } 
  7553. #endif /* TRACE */
  7554.       incr ( bibptr ) ; 
  7555.     } 
  7556.   } 
  7557.   lab10: ; 
  7558.  
  7559.  
  7560. }
  7561. void auxbibstylecommand (void) {
  7562.     /* 10 */ if ( ( bstseen ) ) 
  7563.   {
  7564.     auxerrillegalanother ( 1 ) ; 
  7565.     {
  7566.       auxerrprint () ; 
  7567.       goto lab10 ; 
  7568.     } 
  7569.   } 
  7570.   bstseen = true ; 
  7571.   incr ( bufptr2 ) ; 
  7572.   if ( ( ! scan1white ( 125 ) ) ) 
  7573.   {
  7574.     auxerrnorightbracepr () ; 
  7575.     {
  7576.       auxerrprint () ; 
  7577.       goto lab10 ; 
  7578.     } 
  7579.   } 
  7580.   if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  7581.   {
  7582.     auxerrwhitespaceinar () ; 
  7583.     {
  7584.       auxerrprint () ; 
  7585.       goto lab10 ; 
  7586.     } 
  7587.   } 
  7588.   if ( ( last > bufptr2 + 1 ) ) 
  7589.   {
  7590.     auxerrstuffafterrigh () ; 
  7591.     {
  7592.       auxerrprint () ; 
  7593.       goto lab10 ; 
  7594.     } 
  7595.   } 
  7596.   {
  7597.     bststr = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 
  7598.     5 , true ) ] ; 
  7599.     if ( ( hashfound ) ) 
  7600.     {
  7601.     ;
  7602. #ifdef TRACE
  7603.       printbstname () ; 
  7604. #endif /* TRACE */
  7605.       {
  7606.     {
  7607.       (void) ReverseFPuts( logfile ,  "Already encountered style file" ) ; 
  7608.       (void) FPrintFStdErr(  "Already encountered style file" ) ; 
  7609.     } 
  7610.     printconfusion () ; 
  7611.     longjmp(jmp9998,1) ; 
  7612.       } 
  7613.     } 
  7614.     startname ( bststr ) ; 
  7615.     addextension ( sbstextension ) ; 
  7616.     if ( ( ! aopenin ( bstfile ) ) ) 
  7617.     {
  7618.       addarea ( sbstarea ) ; 
  7619.       if ( ( ! aopenin ( bstfile ) ) ) 
  7620.       {
  7621.     {
  7622.       (void) ReverseFPuts( logfile ,  "I couldn't open style file " ) ; 
  7623.       (void) FPrintFStdErr(  "I couldn't open style file " ) ; 
  7624.     } 
  7625.     printbstname () ; 
  7626.     bststr = 0 ; 
  7627.     {
  7628.       auxerrprint () ; 
  7629.       goto lab10 ; 
  7630.     } 
  7631.       } 
  7632.     } 
  7633.     {
  7634.       (void) ReverseFPuts( logfile ,  "The style file: " ) ; 
  7635.       (void) FPrintFStdErr(  "The style file: " ) ; 
  7636.     } 
  7637.     printbstname () ; 
  7638.   } 
  7639.   lab10: ; 
  7640.  
  7641.  
  7642. }
  7643. void auxcitationcommand (void) {
  7644.     /* 23 10 */ citationseen = true ; 
  7645.   while ( ( buffer [ bufptr2 ] != 125 ) ) {
  7646.       
  7647.     incr ( bufptr2 ) ; 
  7648.     if ( ( ! scan2white ( 125 , 44 ) ) ) 
  7649.     {
  7650.       auxerrnorightbracepr () ; 
  7651.       {
  7652.     auxerrprint () ; 
  7653.     goto lab10 ; 
  7654.       } 
  7655.     } 
  7656.     if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  7657.     {
  7658.       auxerrwhitespaceinar () ; 
  7659.       {
  7660.     auxerrprint () ; 
  7661.     goto lab10 ; 
  7662.       } 
  7663.     } 
  7664.     if ( ( ( last > bufptr2 + 1 ) && ( buffer [ bufptr2 ] == 125 ) ) ) 
  7665.     {
  7666.       auxerrstuffafterrigh () ; 
  7667.       {
  7668.     auxerrprint () ; 
  7669.     goto lab10 ; 
  7670.       } 
  7671.     } 
  7672.     {
  7673.     ;
  7674. #ifdef TRACE
  7675.       {
  7676.     outtoken ( logfile ) ; 
  7677.       } 
  7678.       {
  7679.     (void) ReverseFPuts( logfile ,  " cite key encountered" ) ; 
  7680.       } 
  7681. #endif /* TRACE */
  7682.       {
  7683.     if ( ( ( bufptr2 - bufptr1 ) == 1 ) ) 
  7684.     if ( ( buffer [ bufptr1 ] == 42 ) ) 
  7685.     {
  7686.     ;
  7687. #ifdef TRACE
  7688.       {
  7689.         (void) FPrintF( logfile , "%s\r",  "---entire database to be included" ) ; 
  7690.       } 
  7691. #endif /* TRACE */
  7692.       if ( ( allentries ) ) 
  7693.       {
  7694.         {
  7695.           (void) FPrintF( logfile , "%s\r",  "Multiple inclusions of entire database" ) ; 
  7696.           (void) FPrintFStdErr( "%s\r",  "Multiple inclusions of entire database" ) ; 
  7697.         } 
  7698.         {
  7699.           auxerrprint () ; 
  7700.           goto lab10 ; 
  7701.         } 
  7702.       } 
  7703.       else {
  7704.           
  7705.         allentries = true ; 
  7706.         allmarker = citeptr ; 
  7707.         goto lab23 ; 
  7708.       } 
  7709.     } 
  7710.       } 
  7711.       tmpptr = bufptr1 ; 
  7712.       while ( ( tmpptr < bufptr2 ) ) {
  7713.       
  7714.     exbuf [ tmpptr ] = buffer [ tmpptr ] ; 
  7715.     incr ( tmpptr ) ; 
  7716.       } 
  7717.       lowercase ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) ) ; 
  7718.       lcciteloc = strlookup ( exbuf , bufptr1 , ( bufptr2 - bufptr1 ) , 10 , 
  7719.       true ) ; 
  7720.       if ( ( hashfound ) ) 
  7721.       {
  7722.     ;
  7723. #ifdef TRACE
  7724.     {
  7725.       (void) FPrintF( logfile , "%s\r",  " previously" ) ; 
  7726.     } 
  7727. #endif /* TRACE */
  7728.     dummyloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9 , 
  7729.     false ) ; 
  7730.     if ( ( ! hashfound ) ) 
  7731.     {
  7732.       {
  7733.         (void) ReverseFPuts( logfile ,  "Case mismatch error between cite keys " ) ; 
  7734.         (void) FPrintFStdErr(  "Case mismatch error between cite keys " ) ; 
  7735.       } 
  7736.       printatoken () ; 
  7737.       {
  7738.         (void) ReverseFPuts( logfile ,  " and " ) ; 
  7739.         (void) FPrintFStdErr(  " and " ) ; 
  7740.       } 
  7741.       printapoolstr ( citelist [ ilkinfo [ ilkinfo [ lcciteloc ] ] ] ) ; 
  7742.       printanewline () ; 
  7743.       {
  7744.         auxerrprint () ; 
  7745.         goto lab10 ; 
  7746.       } 
  7747.     } 
  7748.       } 
  7749.       else {
  7750.       
  7751.     ;
  7752. #ifdef TRACE
  7753.     {
  7754.       (void) FPutC('\r', logfile );
  7755.     } 
  7756. #endif /* TRACE */
  7757.     citeloc = strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) , 9 , 
  7758.     true ) ; 
  7759.     if ( ( hashfound ) ) 
  7760.     hashciteconfusion () ; 
  7761.     checkciteoverflow ( citeptr ) ; 
  7762.     citelist [ citeptr ] = hashtext [ citeloc ] ; 
  7763.     ilkinfo [ citeloc ] = citeptr ; 
  7764.     ilkinfo [ lcciteloc ] = citeloc ; 
  7765.     incr ( citeptr ) ; 
  7766.       } 
  7767.     } 
  7768.     lab23: ; 
  7769.   } 
  7770.   lab10: ; 
  7771.  
  7772.  
  7773. }
  7774. void auxinputcommand (void) {
  7775.     /* 10 */ boolean auxextensionok  ; 
  7776.   incr ( bufptr2 ) ; 
  7777.   if ( ( ! scan1white ( 125 ) ) ) 
  7778.   {
  7779.     auxerrnorightbracepr () ; 
  7780.     {
  7781.       auxerrprint () ; 
  7782.       goto lab10 ; 
  7783.     } 
  7784.   } 
  7785.   if ( ( lexclass [ buffer [ bufptr2 ] ] == 1 ) ) 
  7786.   {
  7787.     auxerrwhitespaceinar () ; 
  7788.     {
  7789.       auxerrprint () ; 
  7790.       goto lab10 ; 
  7791.     } 
  7792.   } 
  7793.   if ( ( last > bufptr2 + 1 ) ) 
  7794.   {
  7795.     auxerrstuffafterrigh () ; 
  7796.     {
  7797.       auxerrprint () ; 
  7798.       goto lab10 ; 
  7799.     } 
  7800.   } 
  7801.   {
  7802.     incr ( auxptr ) ; 
  7803.     if ( ( auxptr == auxstacksize ) ) 
  7804.     {
  7805.       printatoken () ; 
  7806.       {
  7807.     (void) ReverseFPuts( logfile ,  ": " ) ; 
  7808.     (void) FPrintFStdErr(  ": " ) ; 
  7809.       } 
  7810.       {
  7811.     printoverflow () ; 
  7812.     {
  7813.       (void) FPrintF( logfile , "%s%ld\r",  "auxiliary file depth " , (long)auxstacksize ) ; 
  7814.       (void) FPrintFStdErr( "%s%ld\r",  "auxiliary file depth " , (long)auxstacksize ) ; 
  7815.     } 
  7816.     longjmp(jmp9998,1) ; 
  7817.       } 
  7818.     } 
  7819.     auxextensionok = true ; 
  7820.     if ( ( ( bufptr2 - bufptr1 ) < ( strstart [ sauxextension + 1 ] - strstart 
  7821.     [ sauxextension ] ) ) ) 
  7822.     auxextensionok = false ; 
  7823.     else if ( ( ! streqbuf ( sauxextension , buffer , bufptr2 - ( strstart [ 
  7824.     sauxextension + 1 ] - strstart [ sauxextension ] ) , ( strstart [ 
  7825.     sauxextension + 1 ] - strstart [ sauxextension ] ) ) ) ) 
  7826.     auxextensionok = false ; 
  7827.     if ( ( ! auxextensionok ) ) 
  7828.     {
  7829.       printatoken () ; 
  7830.       {
  7831.     (void) ReverseFPuts( logfile ,  " has a wrong extension" ) ; 
  7832.     (void) FPrintFStdErr(  " has a wrong extension" ) ; 
  7833.       } 
  7834.       decr ( auxptr ) ; 
  7835.       {
  7836.     auxerrprint () ; 
  7837.     goto lab10 ; 
  7838.       } 
  7839.     } 
  7840.     auxlist [ auxptr ] = hashtext [ strlookup ( buffer , bufptr1 , ( bufptr2 - 
  7841.     bufptr1 ) , 3 , true ) ] ; 
  7842.     if ( ( hashfound ) ) 
  7843.     {
  7844.       {
  7845.     (void) ReverseFPuts( logfile ,  "Already encountered file " ) ; 
  7846.     (void) FPrintFStdErr(  "Already encountered file " ) ; 
  7847.       } 
  7848.       printauxname () ; 
  7849.       decr ( auxptr ) ; 
  7850.       {
  7851.     auxerrprint () ; 
  7852.     goto lab10 ; 
  7853.       } 
  7854.     } 
  7855.     {
  7856.       startname ( auxlist [ auxptr ] ) ; 
  7857.       nameptr = namelength ; 
  7858.       while ( ( nameptr <= 1024 ) ) {
  7859.       
  7860.     nameoffile [ nameptr ] = ' ' ; 
  7861.     incr ( nameptr ) ; 
  7862.       } 
  7863.       if ( ( ! aopenin ( auxfile [ auxptr ] ) ) ) 
  7864.       {
  7865.     {
  7866.       (void) ReverseFPuts( logfile ,  "I couldn't open auxiliary file " ) ; 
  7867.       (void) FPrintFStdErr(  "I couldn't open auxiliary file " ) ; 
  7868.     } 
  7869.     printauxname () ; 
  7870.     decr ( auxptr ) ; 
  7871.     {
  7872.       auxerrprint () ; 
  7873.       goto lab10 ; 
  7874.     } 
  7875.       } 
  7876.       {
  7877.     (void) FPrintF( logfile , "%s%ld%s",  "A level-" , (long)auxptr , " auxiliary file: " ) ; 
  7878.     (void) FPrintFStdErr( "%s%ld%s",  "A level-" , (long)auxptr , " auxiliary file: " ) ; 
  7879.       } 
  7880.       printauxname () ; 
  7881.       auxlnstack [ auxptr ] = 0 ; 
  7882.     } 
  7883.   } 
  7884.   lab10: ; 
  7885.  
  7886.  
  7887. }
  7888. void poptheauxstack (void) {
  7889.     aclose ( auxfile [ auxptr ] ) ; 
  7890.   if ( ( auxptr == 0 ) ) 
  7891.   {lab31=1; return;}
  7892.   else decr ( auxptr ) ; 
  7893.  
  7894.  
  7895. }
  7896. void getauxcommandandproc (void) {
  7897.     /* 10 */ bufptr2 = 0 ; 
  7898.   if ( ( ! scan1 ( 123 ) ) ) 
  7899.   goto lab10 ; 
  7900.   commandnum = ilkinfo [ strlookup ( buffer , bufptr1 , ( bufptr2 - bufptr1 ) 
  7901.   , 2 , false ) ] ; 
  7902.   if ( ( hashfound ) ) 
  7903.   switch ( ( commandnum ) ) 
  7904.   {case 0 : 
  7905.     auxbibdatacommand () ; 
  7906.     break ; 
  7907.   case 1 : 
  7908.     auxbibstylecommand () ; 
  7909.     break ; 
  7910.   case 2 : 
  7911.     auxcitationcommand () ; 
  7912.     break ; 
  7913.   case 3 : 
  7914.     auxinputcommand () ; 
  7915.     break ; 
  7916.     default: 
  7917.     {
  7918.       {
  7919.     (void) ReverseFPuts( logfile ,  "Unknown auxiliary-file command" ) ; 
  7920.     (void) FPrintFStdErr(  "Unknown auxiliary-file command" ) ; 
  7921.       } 
  7922.       printconfusion () ; 
  7923.       longjmp(jmp9998,1) ; 
  7924.     } 
  7925.     break ; 
  7926.   } 
  7927.   lab10: ; 
  7928.  
  7929.  
  7930. }
  7931. void lastcheckforauxerror (void) {
  7932.     numcites = citeptr ; 
  7933.   numbibfiles = bibptr ; 
  7934.   if ( ( ! citationseen ) ) 
  7935.   {
  7936.     auxend1errprint () ; 
  7937.     {
  7938.       (void) ReverseFPuts( logfile ,  "\\citation commands" ) ; 
  7939.       (void) FPrintFStdErr(  "\\citation commands" ) ; 
  7940.     } 
  7941.     auxend2errprint () ; 
  7942.   } 
  7943.   else if ( ( ( numcites == 0 ) && ( ! allentries ) ) ) 
  7944.   {
  7945.     auxend1errprint () ; 
  7946.     {
  7947.       (void) ReverseFPuts( logfile ,  "cite keys" ) ; 
  7948.       (void) FPrintFStdErr(  "cite keys" ) ; 
  7949.     } 
  7950.     auxend2errprint () ; 
  7951.   } 
  7952.   if ( ( ! bibseen ) ) 
  7953.   {
  7954.     auxend1errprint () ; 
  7955.     {
  7956.       (void) ReverseFPuts( logfile ,  "\\bibdata command" ) ; 
  7957.       (void) FPrintFStdErr(  "\\bibdata command" ) ; 
  7958.     } 
  7959.     auxend2errprint () ; 
  7960.   } 
  7961.   else if ( ( numbibfiles == 0 ) ) 
  7962.   {
  7963.     auxend1errprint () ; 
  7964.     {
  7965.       (void) ReverseFPuts( logfile ,  "database files" ) ; 
  7966.       (void) FPrintFStdErr(  "database files" ) ; 
  7967.     } 
  7968.     auxend2errprint () ; 
  7969.   } 
  7970.   if ( ( ! bstseen ) ) 
  7971.   {
  7972.     auxend1errprint () ; 
  7973.     {
  7974.       (void) ReverseFPuts( logfile ,  "\\bibstyle command" ) ; 
  7975.       (void) FPrintFStdErr(  "\\bibstyle command" ) ; 
  7976.     } 
  7977.     auxend2errprint () ; 
  7978.   } 
  7979.   else if ( ( bststr == 0 ) ) 
  7980.   {
  7981.     auxend1errprint () ; 
  7982.     {
  7983.       (void) ReverseFPuts( logfile ,  "style file" ) ; 
  7984.       (void) FPrintFStdErr(  "style file" ) ; 
  7985.     } 
  7986.     auxend2errprint () ; 
  7987.   } 
  7988. #include "BibTeX.h"
  7989. #include "BibTeX.p"
  7990. #include "globals.h"
  7991. #include "coerce.h"
  7992.  
  7993. void bibidprint (void) {
  7994.     if ( ( scanresult == 0 ) ) 
  7995.   {
  7996.     (void) ReverseFPuts( logfile ,  "You're missing " ) ; 
  7997.     (void) FPrintFStdErr(  "You're missing " ) ; 
  7998.   } 
  7999.   else if ( ( scanresult == 2 ) ) 
  8000.   {
  8001.     (void) FPrintF( logfile , "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows " ) ; 
  8002.     (void) FPrintFStdErr( "%c%c%s",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows " ) ; 
  8003.   } 
  8004.   else idscanningconfusion () ; 
  8005.  
  8006.  
  8007. }
  8008. void bibcmdconfusion (void) {
  8009.     { 
  8010.     {
  8011.       (void) ReverseFPuts( logfile ,  "Unknown database-file command" ) ; 
  8012.       (void) FPrintFStdErr(  "Unknown database-file command" ) ; 
  8013.     } 
  8014.     printconfusion () ; 
  8015.     longjmp(jmp9998,1) ; 
  8016.   } 
  8017.  
  8018.  
  8019. }
  8020. void citekeydisappearedco (void) {
  8021.     { 
  8022.     {
  8023.       (void) ReverseFPuts( logfile ,  "A cite key disappeared" ) ; 
  8024.       (void) FPrintFStdErr(  "A cite key disappeared" ) ; 
  8025.     } 
  8026.     printconfusion () ; 
  8027.     longjmp(jmp9998,1) ; 
  8028.   } 
  8029.  
  8030. void
  8031. #ifdef STDC
  8032. zbadcrossreferencepri (strnumber s ) 
  8033. #else
  8034. zbadcrossreferencepri ( s ) 
  8035. strnumber s ; 
  8036. #endif
  8037. {{
  8038.     
  8039.     (void) ReverseFPuts( logfile ,  "--entry \"" ) ; 
  8040.     (void) FPrintFStdErr(  "--entry \"" ) ; 
  8041.   } 
  8042.   printapoolstr ( citelist [ citeptr ] ) ; 
  8043.   {
  8044.     (void) FPrintF( logfile , "%c\r",  '"' ) ; 
  8045.     (void) FPrintFStdErr( "%c\r",  '"' ) ; 
  8046.   } 
  8047.   {
  8048.     (void) ReverseFPuts( logfile ,  "refers to entry \"" ) ; 
  8049.     (void) FPrintFStdErr(  "refers to entry \"" ) ; 
  8050.   } 
  8051.   printapoolstr ( s ) ; 
  8052.  
  8053.  
  8054. }
  8055. void nonexistentcrossrefe (void) {
  8056.     { 
  8057.     (void) ReverseFPuts( logfile ,  "A bad cross reference-" ) ; 
  8058.     (void) FPrintFStdErr(  "A bad cross reference-" ) ; 
  8059.   } 
  8060.   badcrossreferencepri ( fieldinfo [ fieldptr ] ) ; 
  8061.   {
  8062.     (void) FPrintF( logfile , "%s%ld\r",  "\", (long)which doesn't exist" ) ; 
  8063.     (void) FPrintFStdErr( "%s%ld\r",  "\", (long)which doesn't exist" ) ; 
  8064.   } 
  8065.   markerror () ; 
  8066. }
  8067.  
  8068. void
  8069. #ifdef STDC
  8070. zprintmissingentry (strnumber s ) 
  8071. #else
  8072. zprintmissingentry ( s ) 
  8073. strnumber s ; 
  8074. #endif
  8075. {
  8076.     {
  8077.     
  8078.     (void) ReverseFPuts( logfile ,  "Warning--I didn't find a database entry for \"" ) ; 
  8079.     (void) FPrintFStdErr(  "Warning--I didn't find a database entry for \"" ) ; 
  8080.   } 
  8081.   printapoolstr ( s ) ; 
  8082.   {
  8083.     (void) FPrintF( logfile , "%c\r",  '"' ) ; 
  8084.     (void) FPrintFStdErr( "%c\r",  '"' ) ; 
  8085.   } 
  8086.   markwarning () ; 
  8087.  
  8088.  
  8089. }
  8090. void bstexwarnprint (void) {
  8091.     if ( ( messwithentries ) ) 
  8092.   {
  8093.     {
  8094.       (void) ReverseFPuts( logfile ,  " for entry " ) ; 
  8095.       (void) FPrintFStdErr(  " for entry " ) ; 
  8096.     } 
  8097.     printapoolstr ( citelist [ citeptr ] ) ; 
  8098.   } 
  8099.   printanewline () ; 
  8100.   {
  8101.     (void) ReverseFPuts( logfile ,  "while executing-" ) ; 
  8102.     (void) FPrintFStdErr(  "while executing-" ) ; 
  8103.   } 
  8104.   bstlnnumprint () ; 
  8105.   markerror () ; 
  8106.  
  8107.  
  8108. }
  8109. void bstmildexwarnprint (void) {
  8110.     if ( ( messwithentries ) ) 
  8111.   {
  8112.     {
  8113.       (void) ReverseFPuts( logfile ,  " for entry " ) ; 
  8114.       (void) FPrintFStdErr(  " for entry " ) ; 
  8115.     } 
  8116.     printapoolstr ( citelist [ citeptr ] ) ; 
  8117.   } 
  8118.   printanewline () ; 
  8119.   {
  8120.     {
  8121.       (void) ReverseFPuts( logfile ,  "while executing" ) ; 
  8122.       (void) FPrintFStdErr(  "while executing" ) ; 
  8123.     } 
  8124.     bstwarnprint () ; 
  8125.   } 
  8126.  
  8127.  
  8128. }
  8129. void bstcantmesswithentri (void) {
  8130.     { 
  8131.     {
  8132.       (void) ReverseFPuts( logfile ,  "You can't mess with entries here" ) ; 
  8133.       (void) FPrintFStdErr(  "You can't mess with entries here" ) ; 
  8134.     } 
  8135.     bstexwarnprint () ; 
  8136.   } 
  8137.  
  8138.  
  8139. }
  8140. void illeglliteralconfusi (void) {
  8141.     { 
  8142.     {
  8143.       (void) ReverseFPuts( logfile ,  "Illegal literal type" ) ; 
  8144.       (void) FPrintFStdErr(  "Illegal literal type" ) ; 
  8145.     } 
  8146.     printconfusion () ; 
  8147.     longjmp(jmp9998,1) ; 
  8148.   } 
  8149.  
  8150.  
  8151. }
  8152. void unknwnliteralconfusi (void) {
  8153.     { 
  8154.     {
  8155.       (void) ReverseFPuts( logfile ,  "Unknown literal type" ) ; 
  8156.       (void) FPrintFStdErr(  "Unknown literal type" ) ; 
  8157.     } 
  8158.     printconfusion () ; 
  8159.     longjmp(jmp9998,1) ; 
  8160.   } 
  8161.  
  8162. void
  8163. #ifdef STDC
  8164. zprintstklit (integer stklt ,stktype stktp ) 
  8165. #else
  8166. zprintstklit ( stklt , stktp ) 
  8167. integer stklt ; 
  8168. stktype stktp ; 
  8169. #endif
  8170. {switch ( ( stktp ) ) 
  8171.   {case 0 : 
  8172.     {
  8173.       (void) FPrintF( logfile , "%ld%s",  (long)stklt , " is an integer literal" ) ; 
  8174.       (void) FPrintFStdErr( "%ld%s",  (long)stklt , " is an integer literal" ) ; 
  8175.     } 
  8176.     break ; 
  8177.   case 1 : 
  8178.     {
  8179.       {
  8180.     (void) FPutC( '"' , logfile );
  8181.     (void) FPutC( '"' );
  8182.       } 
  8183.       printapoolstr ( stklt ) ; 
  8184.       {
  8185.     (void) ReverseFPuts( logfile ,  "\" is a string literal" ) ; 
  8186.     (void) FPrintFStdErr(  "\" is a string literal" ) ; 
  8187.       } 
  8188.     } 
  8189.     break ; 
  8190.   case 2 : 
  8191.     {
  8192.       {
  8193.     (void) FPutC( '`' , logfile );
  8194.     (void) FPutC( '`' );
  8195.       } 
  8196.       printapoolstr ( hashtext [ stklt ] ) ; 
  8197.       {
  8198.     (void) ReverseFPuts( logfile ,  "' is a function literal" ) ; 
  8199.     (void) FPrintFStdErr(  "' is a function literal" ) ; 
  8200.       } 
  8201.     } 
  8202.     break ; 
  8203.   case 3 : 
  8204.     {
  8205.       {
  8206.     (void) FPutC( '`' , logfile );
  8207.     (void) FPutC( '`' );
  8208.       } 
  8209.       printapoolstr ( stklt ) ; 
  8210.       {
  8211.     (void) ReverseFPuts( logfile ,  "' is a missing field" ) ; 
  8212.     (void) FPrintFStdErr(  "' is a missing field" ) ; 
  8213.       } 
  8214.     } 
  8215.     break ; 
  8216.   case 4 : 
  8217.     illeglliteralconfusi () ; 
  8218.     break ; 
  8219.     default: 
  8220.     unknwnliteralconfusi () ; 
  8221.     break ; 
  8222.   } 
  8223.  
  8224.  
  8225. }
  8226. void
  8227. #ifdef STDC
  8228. zprintlit (integer stklt ,stktype stktp ) 
  8229. #else
  8230. zprintlit ( stklt , stktp ) 
  8231. integer stklt ; 
  8232. stktype stktp ; 
  8233. #endif
  8234. {switch ( ( stktp ) ) 
  8235.   {case 0 : 
  8236.     {
  8237.       (void) FPrintF( logfile , "%ld\r",  (long)stklt ) ; 
  8238.       (void) FPrintFStdErr( "%ld\r",  (long)stklt ) ; 
  8239.     } 
  8240.     break ; 
  8241.   case 1 : 
  8242.     {
  8243.       printapoolstr ( stklt ) ; 
  8244.       printanewline () ; 
  8245.     } 
  8246.     break ; 
  8247.   case 2 : 
  8248.     {
  8249.       printapoolstr ( hashtext [ stklt ] ) ; 
  8250.       printanewline () ; 
  8251.     } 
  8252.     break ; 
  8253.   case 3 : 
  8254.     {
  8255.       printapoolstr ( stklt ) ; 
  8256.       printanewline () ; 
  8257.     } 
  8258.     break ; 
  8259.   case 4 : 
  8260.     illeglliteralconfusi () ; 
  8261.     break ; 
  8262.     default: 
  8263.     unknwnliteralconfusi () ; 
  8264.     break ; 
  8265.   } 
  8266.  
  8267.  
  8268. }
  8269. void outputbblline (void) {
  8270.     /* 15 10 */ if ( ( outbuflength != 0 ) ) 
  8271.   {
  8272.     while ( ( outbuflength > 0 ) ) if ( ( lexclass [ outbuf [ outbuflength - 1 
  8273.     ] ] == 1 ) ) 
  8274.     decr ( outbuflength ) ; 
  8275.     else goto lab15 ; 
  8276.     lab15: if ( ( outbuflength == 0 ) ) 
  8277.     goto lab10 ; 
  8278.     outbufptr = 0 ; 
  8279.     while ( ( outbufptr < outbuflength ) ) {
  8280.     
  8281.       (void) FPutC( xchr [ outbuf [ outbufptr ] ] ,  bblfile );
  8282.       incr ( outbufptr ) ; 
  8283.     } 
  8284.   } 
  8285.   (void) FPutC('\r',  bblfile );
  8286.   incr ( bbllinenum ) ; 
  8287.   outbuflength = 0 ; 
  8288.   lab10: ; 
  8289.  
  8290.  
  8291. }
  8292. void bst1printstringsizee (void) {
  8293.     { 
  8294.     (void) ReverseFPuts( logfile ,  "Warning--you've exceeded " ) ; 
  8295.     (void) FPrintFStdErr(  "Warning--you've exceeded " ) ; 
  8296.   } 
  8297.  
  8298.  
  8299. }
  8300. void bst2printstringsizee (void) {
  8301.     { 
  8302.     (void) ReverseFPuts( logfile ,  "-string-size," ) ; 
  8303.     (void) FPrintFStdErr(  "-string-size," ) ; 
  8304.   } 
  8305.   bstmildexwarnprint () ; 
  8306.   {
  8307.     (void) FPrintF( logfile , "%s\r",  "*Please notify the bibstyle designer*" ) ; 
  8308.     (void) FPrintFStdErr( "%s\r",  "*Please notify the bibstyle designer*" ) ; 
  8309.   } 
  8310.  
  8311.  
  8312. }
  8313. void
  8314. #ifdef STDC
  8315. zbracesunbalancedcomp (strnumber poplitvar ) 
  8316. #else
  8317. zbracesunbalancedcomp ( poplitvar ) 
  8318. strnumber poplitvar ; 
  8319. #endif
  8320. {{
  8321.     
  8322.     (void) ReverseFPuts( logfile ,  "Warning--\"" ) ; 
  8323.     (void) FPrintFStdErr(  "Warning--\"" ) ; 
  8324.   } 
  8325.   printapoolstr ( poplitvar ) ; 
  8326.   {
  8327.     {
  8328.       (void) ReverseFPuts( logfile ,  "\" isn't a brace-balanced string" ) ; 
  8329.       (void) FPrintFStdErr(  "\" isn't a brace-balanced string" ) ; 
  8330.     } 
  8331.     bstmildexwarnprint () ; 
  8332.   } 
  8333.  
  8334.  
  8335. }
  8336. void caseconversionconfus (void) {
  8337.     { 
  8338.     {
  8339.       (void) ReverseFPuts( logfile ,  "Unknown type of case conversion" ) ; 
  8340.       (void) FPrintFStdErr(  "Unknown type of case conversion" ) ; 
  8341.     } 
  8342.     printconfusion () ; 
  8343.     longjmp(jmp9998,1) ; 
  8344.   } 
  8345.  
  8346.  
  8347. }
  8348. void traceandstatprinting (void) {
  8349.     
  8350.     ;
  8351. #ifdef TRACE
  8352.   {
  8353.     if ( ( numbibfiles == 1 ) ) 
  8354.     {
  8355.       (void) FPrintF( logfile , "%s\r",  "The 1 database file is" ) ; 
  8356.     } 
  8357.     else {
  8358.     
  8359.       (void) FPrintF( logfile , "%s%ld%s\r",  "The " , (long)numbibfiles , " database files are" ) ; 
  8360.     } 
  8361.     if ( ( numbibfiles == 0 ) ) 
  8362.     {
  8363.       (void) FPrintF( logfile , "%s\r",  "   undefined" ) ; 
  8364.     } 
  8365.     else {
  8366.     
  8367.       bibptr = 0 ; 
  8368.       while ( ( bibptr < numbibfiles ) ) {
  8369.       
  8370.     {
  8371.       (void) ReverseFPuts( logfile ,  "   " ) ; 
  8372.     } 
  8373.     {
  8374.       outpoolstr ( logfile , biblist [ bibptr ] ) ; 
  8375.     } 
  8376.     {
  8377.       outpoolstr ( logfile , sbibextension ) ; 
  8378.     } 
  8379.     {
  8380.       (void) FPutC('\r', logfile );
  8381.     } 
  8382.     incr ( bibptr ) ; 
  8383.       } 
  8384.     } 
  8385.     {
  8386.       (void) ReverseFPuts( logfile ,  "The style file is " ) ; 
  8387.     } 
  8388.     if ( ( bststr == 0 ) ) 
  8389.     {
  8390.       (void) FPrintF( logfile , "%s\r",  "undefined" ) ; 
  8391.     } 
  8392.     else {
  8393.     
  8394.       {
  8395.     outpoolstr ( logfile , bststr ) ; 
  8396.       } 
  8397.       {
  8398.     outpoolstr ( logfile , sbstextension ) ; 
  8399.       } 
  8400.       {
  8401.     (void) FPutC('\r', logfile );
  8402.       } 
  8403.     } 
  8404.   } 
  8405.   {
  8406.     if ( ( allentries ) ) 
  8407.     {
  8408.       (void) FPrintF( logfile , "%s%ld%s",  "all_marker=" , (long)allmarker , ", " ) ; 
  8409.     } 
  8410.     if ( ( readperformed ) ) 
  8411.     {
  8412.       (void) FPrintF( logfile , "%s%ld\r",  "old_num_cites=" , (long)oldnumcites ) ; 
  8413.     } 
  8414.     else {
  8415.     
  8416.       (void) FPutC('\r', logfile );
  8417.     } 
  8418.     {
  8419.       (void) FPrintF( logfile , "%s%ld",  "The " , (long)numcites ) ; 
  8420.     } 
  8421.     if ( ( numcites == 1 ) ) 
  8422.     {
  8423.       (void) FPrintF( logfile , "%s\r",  " entry:" ) ; 
  8424.     } 
  8425.     else {
  8426.     
  8427.       (void) FPrintF( logfile , "%s\r",  " entries:" ) ; 
  8428.     } 
  8429.     if ( ( numcites == 0 ) ) 
  8430.     {
  8431.       (void) FPrintF( logfile , "%s\r",  "   undefined" ) ; 
  8432.     } 
  8433.     else {
  8434.     
  8435.       sortciteptr = 0 ; 
  8436.       while ( ( sortciteptr < numcites ) ) {
  8437.       
  8438.     if ( ( ! readcompleted ) ) 
  8439.     citeptr = sortciteptr ; 
  8440.     else citeptr = citeinfo [ sortciteptr ] ; 
  8441.     {
  8442.       outpoolstr ( logfile , citelist [ citeptr ] ) ; 
  8443.     } 
  8444.     if ( ( readperformed ) ) 
  8445.     {
  8446.       {
  8447.         (void) ReverseFPuts( logfile ,  ", entry-type " ) ; 
  8448.       } 
  8449.       if ( ( typelist [ citeptr ] == 5001 ) ) 
  8450.       lab5001: {
  8451.           
  8452.         (void) ReverseFPuts( logfile ,  "unknown" ) ; 
  8453.       } 
  8454.       else if ( ( typelist [ citeptr ] == 0 ) ) 
  8455.       {
  8456.         (void) ReverseFPuts( logfile ,  "--- no type found" ) ; 
  8457.       } 
  8458.       else {
  8459.           
  8460.         outpoolstr ( logfile , hashtext [ typelist [ citeptr ] ] ) ; 
  8461.       } 
  8462.       {
  8463.         (void) FPrintF( logfile , "%s\r",  ", has entry strings" ) ; 
  8464.       } 
  8465.       {
  8466.         if ( ( numentstrs == 0 ) ) 
  8467.         {
  8468.           (void) FPrintF( logfile , "%s\r",  "    undefined" ) ; 
  8469.         } 
  8470.         else if ( ( ! readcompleted ) ) 
  8471.         {
  8472.           (void) FPrintF( logfile , "%s\r",  "    uninitialized" ) ; 
  8473.         } 
  8474.         else {
  8475.         
  8476.           strentptr = citeptr * numentstrs ; 
  8477.           while ( ( strentptr < ( citeptr + 1 ) * numentstrs ) ) {
  8478.           
  8479.         entchrptr = 0 ; 
  8480.         {
  8481.           (void) ReverseFPuts( logfile ,  "    \"" ) ; 
  8482.         } 
  8483.         while ( ( entrystrs [ strentptr ] [ entchrptr ] != 127 ) ) {
  8484.             
  8485.           {
  8486.             (void) FPutC( xchr [ entrystrs [ strentptr ] [                     entchrptr ] ] , logfile );
  8487.           } 
  8488.           incr ( entchrptr ) ; 
  8489.         } 
  8490.         {
  8491.           (void) FPrintF( logfile , "%c\r",  '"' ) ; 
  8492.         } 
  8493.         incr ( strentptr ) ; 
  8494.           } 
  8495.         } 
  8496.       } 
  8497.       {
  8498.         (void) ReverseFPuts( logfile ,  "  has entry integers" ) ; 
  8499.       } 
  8500.       {
  8501.         if ( ( numentints == 0 ) ) 
  8502.         {
  8503.           (void) ReverseFPuts( logfile ,  " undefined" ) ; 
  8504.         } 
  8505.         else if ( ( ! readcompleted ) ) 
  8506.         {
  8507.           (void) ReverseFPuts( logfile ,  " uninitialized" ) ; 
  8508.         } 
  8509.         else {
  8510.         
  8511.           intentptr = citeptr * numentints ; 
  8512.           while ( ( intentptr < ( citeptr + 1 ) * numentints ) ) {
  8513.           
  8514.         {
  8515.           (void) FPrintF( logfile , "%c%ld",  ' ' , (long)entryints [ intentptr ] ) ; 
  8516.         } 
  8517.         incr ( intentptr ) ; 
  8518.           } 
  8519.         } 
  8520.         {
  8521.           (void) FPutC('\r', logfile );
  8522.         } 
  8523.       } 
  8524.       {
  8525.         (void) FPrintF( logfile , "%s\r",  "  and has fields" ) ; 
  8526.       } 
  8527.       {
  8528.         if ( ( ! readperformed ) ) 
  8529.         {
  8530.           (void) FPrintF( logfile , "%s\r",  "    uninitialized" ) ; 
  8531.         } 
  8532.         else {
  8533.         
  8534.           fieldptr = citeptr * numfields ; 
  8535.           fieldendptr = fieldptr + numfields ; 
  8536.           nofields = true ; 
  8537.           while ( ( fieldptr < fieldendptr ) ) {
  8538.           
  8539.         if ( ( fieldinfo [ fieldptr ] != 0 ) ) 
  8540.         {
  8541.           {
  8542.             (void) ReverseFPuts( logfile ,  "    \"" ) ; 
  8543.           } 
  8544.           {
  8545.             outpoolstr ( logfile , fieldinfo [ fieldptr ] ) ; 
  8546.           } 
  8547.           {
  8548.             (void) FPrintF( logfile , "%c\r",  '"' ) ; 
  8549.           } 
  8550.           nofields = false ; 
  8551.         } 
  8552.         incr ( fieldptr ) ; 
  8553.           } 
  8554.           if ( ( nofields ) ) 
  8555.           {
  8556.         (void) FPrintF( logfile , "%s\r",  "    missing" ) ; 
  8557.           } 
  8558.         } 
  8559.       } 
  8560.     } 
  8561.     else {
  8562.         
  8563.       (void) FPutC('\r', logfile );
  8564.     } 
  8565.     incr ( sortciteptr ) ; 
  8566.       } 
  8567.     } 
  8568.   } 
  8569.   {
  8570.     {
  8571.       (void) FPrintF( logfile , "%s\r",  "The wiz-defined functions are" ) ; 
  8572.     } 
  8573.     if ( ( wizdefptr == 0 ) ) 
  8574.     {
  8575.       (void) FPrintF( logfile , "%s\r",  "   nonexistent" ) ; 
  8576.     } 
  8577.     else {
  8578.     
  8579.       wizfnptr = 0 ; 
  8580.       while ( ( wizfnptr < wizdefptr ) ) {
  8581.       
  8582.     if ( ( wizfunctions [ wizfnptr ] == 5001 ) ) 
  8583.     {
  8584.       (void) FPrintF( logfile , "%ld%s\r",  (long)wizfnptr , "--end-of-def--" ) ; 
  8585.     } 
  8586.     else if ( ( wizfunctions [ wizfnptr ] == 0 ) ) 
  8587.     {
  8588.       (void) FPrintF( logfile , "%ld%s",  (long)wizfnptr , "  quote_next_function    " ) ; 
  8589.     } 
  8590.     else {
  8591.         
  8592.       {
  8593.         (void) FPrintF( logfile , "%ld%s",  (long)wizfnptr , "  `" ) ; 
  8594.       } 
  8595.       {
  8596.         outpoolstr ( logfile , hashtext [ wizfunctions [ wizfnptr ] ] ) ; 
  8597.       } 
  8598.       {
  8599.         (void) FPrintF( logfile , "%c\r",  '\'' ) ; 
  8600.       } 
  8601.     } 
  8602.     incr ( wizfnptr ) ; 
  8603.       } 
  8604.     } 
  8605.   } 
  8606.   {
  8607.     {
  8608.       (void) FPrintF( logfile , "%s\r",  "The string pool is" ) ; 
  8609.     } 
  8610.     strnum = 1 ; 
  8611.     while ( ( strnum < strptr ) ) {
  8612.     
  8613.       {
  8614.     (void) FPrintF( logfile , "%ld%ld%s",  (long)strnum , (long)strstart [ strnum ] , " \"" ) ; 
  8615.       } 
  8616.       {
  8617.     outpoolstr ( logfile , strnum ) ; 
  8618.       } 
  8619.       {
  8620.     (void) FPrintF( logfile , "%c\r",  '"' ) ; 
  8621.       } 
  8622.       incr ( strnum ) ; 
  8623.     } 
  8624.   } 
  8625. #endif /* TRACE */
  8626.     ;
  8627. #ifdef STAT
  8628.   {
  8629.     {
  8630.       (void) FPrintF( logfile , "%s%ld",  "You've used " , (long)numcites ) ; 
  8631.     } 
  8632.     if ( ( numcites == 1 ) ) 
  8633.     {
  8634.       (void) FPrintF( logfile , "%s\r",  " entry," ) ; 
  8635.     } 
  8636.     else {
  8637.     
  8638.       (void) FPrintF( logfile , "%s\r",  " entries," ) ; 
  8639.     } 
  8640.     {
  8641.       (void) FPrintF( logfile , "%s%ld%s\r",  "            " , (long)wizdefptr ,       " wiz_defined-function locations," ) ; 
  8642.     } 
  8643.     {
  8644.       (void) FPrintF( logfile , "%s%ld%s%ld%s\r",  "            " , (long)strptr , " strings with " ,       (long)strstart [ strptr ] , " characters," ) ; 
  8645.     } 
  8646.     bltinptr = 0 ; 
  8647.     totalexcount = 0 ; 
  8648.     while ( ( bltinptr < numbltinfns ) ) {
  8649.     
  8650.       totalexcount = totalexcount + executioncount [ bltinptr ] ; 
  8651.       incr ( bltinptr ) ; 
  8652.     } 
  8653.     {
  8654.       (void) FPrintF( logfile , "%s%ld%s\r",  "and the built_in function-call counts, " ,       (long)totalexcount , " in all, are:" ) ; 
  8655.     } 
  8656.     bltinptr = 0 ; 
  8657.     while ( ( bltinptr < numbltinfns ) ) {
  8658.     
  8659.       {
  8660.     outpoolstr ( logfile , hashtext [ bltinloc [ bltinptr ] ] ) ; 
  8661.       } 
  8662.       {
  8663.     (void) FPrintF( logfile , "%s%ld\r",  " -- " , (long)executioncount [ bltinptr ] ) ; 
  8664.       } 
  8665.       incr ( bltinptr ) ; 
  8666.     } 
  8667.   } 
  8668. #endif /* STAT */
  8669. #ifdef STDC
  8670. boolean zaopenin (palphafile * f ) 
  8671. #else
  8672. boolean zaopenin ( f ) 
  8673. palphafile * f ; 
  8674. #endif
  8675. {register boolean Result; boolean ok  ; 
  8676.   if ( testaccess ( 4 , 1 ) ) 
  8677.   {
  8678.     reset ( *f , realnameoffile ) ; 
  8679.     ok = true ; 
  8680.   } 
  8681.   else ok = false ; 
  8682.   Result = ok ; 
  8683.   return(Result) ; 
  8684. #ifdef STDC
  8685. boolean zaopenout (palphafile * f ) 
  8686. #else
  8687. boolean zaopenout ( f ) 
  8688. palphafile * f ; 
  8689. #endif
  8690. {register boolean Result; boolean ok  ; 
  8691.   if ( testaccess ( 2 , 0 ) ) 
  8692.   {
  8693.     rewrite ( *f , realnameoffile ) ; 
  8694.     ok = true ; 
  8695.   } 
  8696.   else ok = false ; 
  8697.   Result = ok ; 
  8698.   return(Result) ; 
  8699.  
  8700.  
  8701. }
  8702. void
  8703. #ifdef STDC
  8704. zstartname (strnumber filename ) 
  8705. #else
  8706. zstartname ( filename ) 
  8707. strnumber filename ; 
  8708. #endif
  8709. {poolpointer pptr  ; 
  8710.   if ( ( ( strstart [ filename + 1 ] - strstart [ filename ] ) > 1024 ) ) 
  8711.   {
  8712.     {
  8713.       (void) ReverseFPuts( logfile ,  "File=" ) ; 
  8714.       (void) FPrintFStdErr(  "File=" ) ; 
  8715.     } 
  8716.     printapoolstr ( filename ) ; 
  8717.     {
  8718.       (void) FPrintF( logfile , "%c\r",  ',' ) ; 
  8719.       (void) FPrintFStdErr( "%c\r",  ',' ) ; 
  8720.     } 
  8721.     filenmsizeoverflow () ; 
  8722.   } 
  8723.   nameptr = 0 ; 
  8724.   pptr = strstart [ filename ] ; 
  8725.   while ( ( pptr < strstart [ filename + 1 ] ) ) {
  8726.       
  8727.     nameoffile [ nameptr ] = chr ( strpool [ pptr ] ) ; 
  8728.     incr ( nameptr ) ; 
  8729.     incr ( pptr ) ; 
  8730.   } 
  8731.   namelength = ( strstart [ filename + 1 ] - strstart [ filename ] ) ; 
  8732.  
  8733.  
  8734. }
  8735. void
  8736. #ifdef STDC
  8737. zaddextension (strnumber ext ) 
  8738. #else
  8739. zaddextension ( ext ) 
  8740. strnumber ext ; 
  8741. #endif
  8742. {poolpointer pptr  ; 
  8743.   if ( ( namelength + ( strstart [ ext + 1 ] - strstart [ ext ] ) > 1024 ) ) 
  8744.   {
  8745.     {
  8746.       (void) FPrintF( logfile , "%s%c%s",  "File=" , nameoffile , ", extension=" ) ; 
  8747.       (void) FPrintFStdErr( "%s%c%s",  "File=" , nameoffile , ", extension=" ) ; 
  8748.     } 
  8749.     printapoolstr ( ext ) ; 
  8750.     {
  8751.       (void) FPrintF( logfile , "%c\r",  ',' ) ; 
  8752.       (void) FPrintFStdErr( "%c\r",  ',' ) ; 
  8753.     } 
  8754.     filenmsizeoverflow () ; 
  8755.   } 
  8756.   nameptr = namelength ; 
  8757.   pptr = strstart [ ext ] ; 
  8758.   while ( ( pptr < strstart [ ext + 1 ] ) ) {
  8759.       
  8760.     nameoffile [ nameptr ] = chr ( strpool [ pptr ] ) ; 
  8761.     incr ( nameptr ) ; 
  8762.     incr ( pptr ) ; 
  8763.   } 
  8764.   namelength = namelength + ( strstart [ ext + 1 ] - strstart [ ext ] ) ; 
  8765.   nameoffile [ namelength ] = ' ' ; 
  8766.  
  8767.  
  8768. }
  8769. void
  8770. #ifdef STDC
  8771. zaddarea (strnumber area ) 
  8772. #else
  8773. zaddarea ( area ) 
  8774. strnumber area ; 
  8775. #endif
  8776. {poolpointer pptr  ; 
  8777.   if ( ( namelength + ( strstart [ area + 1 ] - strstart [ area ] ) > 1024 ) ) 
  8778.   {
  8779.     {
  8780.       (void) ReverseFPuts( logfile ,  "File=" ) ; 
  8781.       (void) FPrintFStdErr(  "File=" ) ; 
  8782.     } 
  8783.     printapoolstr ( area ) ; 
  8784.     printstr ( nameoffile , ',' ) ; 
  8785.     filenmsizeoverflow () ; 
  8786.   } 
  8787.   nameptr = namelength ; 
  8788.   while ( ( nameptr > 0 ) ) {
  8789.       
  8790.     nameoffile [ nameptr + ( strstart [ area + 1 ] - strstart [ area ] ) ] = 
  8791.     nameoffile [ nameptr ] ; 
  8792.     decr ( nameptr ) ; 
  8793.   } 
  8794.   nameptr = 0 ; 
  8795.   pptr = strstart [ area ] ; 
  8796.   while ( ( pptr < strstart [ area + 1 ] ) ) {
  8797.       
  8798.     nameoffile [ nameptr ] = chr ( strpool [ pptr ] ) ; 
  8799.     incr ( nameptr ) ; 
  8800.     incr ( pptr ) ; 
  8801.   } 
  8802.   namelength = namelength + ( strstart [ area + 1 ] - strstart [ area ] ) ; 
  8803. strnumber makestring () {
  8804.     register strnumber Result; if ( ( strptr == 
  8805.   maxstrings ) ) 
  8806.   {
  8807.     printoverflow () ; 
  8808.     {
  8809.       (void) FPrintF( logfile , "%s%ld\r",  "number of strings " , (long)maxstrings ) ; 
  8810.       (void) FPrintFStdErr( "%s%ld\r",  "number of strings " , (long)maxstrings ) ; 
  8811.     } 
  8812.     longjmp(jmp9998,1) ; 
  8813.   } 
  8814.   incr ( strptr ) ; 
  8815.   strstart [ strptr ] = poolptr ; 
  8816.   Result = strptr - 1 ; 
  8817.   return(Result) ; 
  8818. #ifdef STDC
  8819. boolean zstreqbuf (strnumber s ,buftype buf ,bufpointer bfptr ,bufpointer len ) 
  8820. #else
  8821. boolean zstreqbuf ( s , buf , bfptr , len ) 
  8822. strnumber s ; 
  8823. buftype buf ; 
  8824. bufpointer bfptr , len ; 
  8825. #endif
  8826. {/* 10 */ register boolean Result; bufpointer i  ; 
  8827.   poolpointer j  ; 
  8828.   if ( ( ( strstart [ s + 1 ] - strstart [ s ] ) != len ) ) 
  8829.   {
  8830.     Result = false ; 
  8831.     goto lab10 ; 
  8832.   } 
  8833.   i = bfptr ; 
  8834.   j = strstart [ s ] ; 
  8835.   while ( ( j < strstart [ s + 1 ] ) ) {
  8836.       
  8837.     if ( ( strpool [ j ] != buf [ i ] ) ) 
  8838.     {
  8839.       Result = false ; 
  8840.       goto lab10 ; 
  8841.     } 
  8842.     incr ( i ) ; 
  8843.     incr ( j ) ; 
  8844.   } 
  8845.   Result = true ; 
  8846.   lab10: ; 
  8847.   return(Result) ; 
  8848. #ifdef STDC
  8849. boolean zstreqstr (strnumber s1 ,strnumber s2 ) 
  8850. #else
  8851. boolean zstreqstr ( s1 , s2 ) 
  8852. strnumber s1 , s2 ; 
  8853. #endif
  8854. {/* 10 */ register boolean Result; if ( ( ( strstart [ s1 + 1 ] - 
  8855.   strstart [ s1 ] ) != ( strstart [ s2 + 1 ] - strstart [ s2 ] ) ) ) 
  8856.   {
  8857.     Result = false ; 
  8858.     goto lab10 ; 
  8859.   } 
  8860.   pptr1 = strstart [ s1 ] ; 
  8861.   pptr2 = strstart [ s2 ] ; 
  8862.   while ( ( pptr1 < strstart [ s1 + 1 ] ) ) {
  8863.       
  8864.     if ( ( strpool [ pptr1 ] != strpool [ pptr2 ] ) ) 
  8865.     {
  8866.       Result = false ; 
  8867.       goto lab10 ; 
  8868.     } 
  8869.     incr ( pptr1 ) ; 
  8870.     incr ( pptr2 ) ; 
  8871.   } 
  8872.   Result = true ; 
  8873.   lab10: ; 
  8874.   return(Result) ; 
  8875.  
  8876.  
  8877. }
  8878. void
  8879. #ifdef STDC
  8880. zlowercase (buftype buf ,bufpointer bfptr ,bufpointer len ) 
  8881. #else
  8882. zlowercase ( buf , bfptr , len ) 
  8883. buftype buf ; 
  8884. bufpointer bfptr , len ; 
  8885. #endif
  8886. {bufpointer i  ; 
  8887.   if ( ( len > 0 ) ) 
  8888.   {register integer for_end; i = bfptr ; for_end = bfptr + len - 1 ; if ( i 
  8889.   <= for_end) do 
  8890.     if ( ( ( buf [ i ] >= 65 ) && ( buf [ i ] <= 90 ) ) ) 
  8891.     buf [ i ] = buf [ i ] + 32 ; 
  8892.   while ( i++ < for_end ) ; } 
  8893.  
  8894.  
  8895. }
  8896. void
  8897. #ifdef STDC
  8898. zuppercase (buftype buf ,bufpointer bfptr ,bufpointer len ) 
  8899. #else
  8900. zuppercase ( buf , bfptr , len ) 
  8901. buftype buf ; 
  8902. bufpointer bfptr , len ; 
  8903. #endif
  8904. {bufpointer i  ; 
  8905.   if ( ( len > 0 ) ) 
  8906.   {register integer for_end; i = bfptr ; for_end = bfptr + len - 1 ; if ( i 
  8907.   <= for_end) do 
  8908.     if ( ( ( buf [ i ] >= 97 ) && ( buf [ i ] <= 122 ) ) ) 
  8909.     buf [ i ] = buf [ i ] - 32 ; 
  8910.   while ( i++ < for_end ) ; } 
  8911. #ifdef STDC
  8912. hashloc zstrlookup (buftype buf ,bufpointer j ,bufpointer l ,strilk ilk ,boolean insertit ) 
  8913. #else
  8914. hashloc zstrlookup ( buf , j , l , ilk , insertit ) 
  8915. buftype buf ; 
  8916. bufpointer j , l ; 
  8917. strilk ilk ; 
  8918. boolean insertit ; 
  8919. #endif
  8920. {/* 40 45 */ register hashloc Result; short h  ; 
  8921.   hashloc p  ; 
  8922.   bufpointer k  ; 
  8923.   boolean oldstring  ; 
  8924.   strnumber strnum  ; 
  8925.  
  8926.   {
  8927.     h = 0 ; 
  8928.     k = j ; 
  8929.     while ( ( k < j + l ) ) {
  8930.     
  8931.       h = h + h + buf [ k ] ; 
  8932.       while ( ( h >= 4253 ) ) h = h - 4253 ; 
  8933.       incr ( k ) ; 
  8934.     } 
  8935.   } 
  8936.   p = h + 1 ; 
  8937.   hashfound = false ; 
  8938.   oldstring = false ; 
  8939.   while ( true ) {
  8940.       
  8941.     {
  8942.       if ( ( hashtext [ p ] > 0 ) ) 
  8943.       if ( ( streqbuf ( hashtext [ p ] , buf , j , l ) ) ) 
  8944.       if ( ( hashilk [ p ] == ilk ) ) 
  8945.       {
  8946.     hashfound = true ; 
  8947.     goto lab40 ; 
  8948.       } 
  8949.       else {
  8950.       
  8951.     oldstring = true ; 
  8952.     strnum = hashtext [ p ] ; 
  8953.       } 
  8954.     } 
  8955.     if ( ( hashnext [ p ] == 0 ) ) 
  8956.     {
  8957.       if ( ( ! insertit ) ) 
  8958.       goto lab45 ; 
  8959.       {
  8960.     if ( ( hashtext [ p ] > 0 ) ) 
  8961.     {
  8962.       do {
  8963.           if ( ( ( hashused == 1 ) ) ) 
  8964.         {
  8965.           printoverflow () ; 
  8966.           {
  8967.         (void) FPrintF( logfile , "%s%ld\r",  "hash size " , (long)5000 ) ; 
  8968.         (void) FPrintFStdErr( "%s%ld\r",  "hash size " , (long)5000 ) ; 
  8969.           } 
  8970.           longjmp(jmp9998,1) ; 
  8971.         } 
  8972.         decr ( hashused ) ; 
  8973.       } while ( ! ( ( hashtext [ hashused ] == 0 ) ) ) ; 
  8974.       hashnext [ p ] = hashused ; 
  8975.       p = hashused ; 
  8976.     } 
  8977.     if ( ( oldstring ) ) 
  8978.     hashtext [ p ] = strnum ; 
  8979.     else {
  8980.         
  8981.       {
  8982.         if ( ( poolptr + l > poolsize ) ) 
  8983.         pooloverflow () ; 
  8984.       } 
  8985.       k = j ; 
  8986.       while ( ( k < j + l ) ) {
  8987.           
  8988.         {
  8989.           strpool [ poolptr ] = buf [ k ] ; 
  8990.           incr ( poolptr ) ; 
  8991.         } 
  8992.         incr ( k ) ; 
  8993.       } 
  8994.       hashtext [ p ] = makestring () ; 
  8995.     } 
  8996.     hashilk [ p ] = ilk ; 
  8997.       } 
  8998.       goto lab40 ; 
  8999.     } 
  9000.     p = hashnext [ p ] ; 
  9001.   } 
  9002.   lab45: ; 
  9003.   lab40: Result = p ; 
  9004.   return(Result) ; 
  9005.  
  9006.  
  9007. }
  9008. void
  9009. #ifdef STDC
  9010. zpredefine (pdstype pds ,pdslen len ,strilk ilk ) 
  9011. #else
  9012. zpredefine ( pds , len , ilk ) 
  9013. pdstype pds ; 
  9014. pdslen len ; 
  9015. strilk ilk ; 
  9016. #endif
  9017. {pdslen i  ; 
  9018.   {register integer for_end; i = 1 ; for_end = len ; if ( i <= for_end) do 
  9019.     buffer [ i ] = xord [ pds [ i - 1 ] ] ; 
  9020.   while ( i++ < for_end ) ; } 
  9021.   predefloc = strlookup ( buffer , 1 , len , ilk , true ) ; 
  9022.  
  9023.  
  9024. }
  9025. void
  9026. #ifdef STDC
  9027. zinttoASCII (integer inte ,buftype intbuf ,bufpointer intbegin ,bufpointer * intend ) 
  9028. #else
  9029. zinttoASCII ( inte , intbuf , intbegin , intend ) 
  9030. integer inte ; 
  9031. buftype intbuf ; 
  9032. bufpointer intbegin ; 
  9033. bufpointer * intend ; 
  9034. #endif
  9035. {bufpointer intptr, intxptr  ; 
  9036.   ASCIIcode inttmpval  ; 
  9037.   intptr = intbegin ; 
  9038.   if ( ( inte < 0 ) ) 
  9039.   {
  9040.     {
  9041.       if ( ( intptr == bufsize ) ) 
  9042.       bufferoverflow () ; 
  9043.       intbuf [ intptr ] = 45 ; 
  9044.       incr ( intptr ) ; 
  9045.     } 
  9046.     inte = - (integer) inte ; 
  9047.   } 
  9048.   intxptr = intptr ; 
  9049.   do {
  9050.       { 
  9051.       if ( ( intptr == bufsize ) ) 
  9052.       bufferoverflow () ; 
  9053.       intbuf [ intptr ] = 48 + ( inte % 10 ) ; 
  9054.       incr ( intptr ) ; 
  9055.     } 
  9056.     inte = inte / 10 ; 
  9057.   } while ( ! ( ( inte == 0 ) ) ) ; 
  9058. *  intend = intptr ; 
  9059.   decr ( intptr ) ; 
  9060.   while ( ( intxptr < intptr ) ) {
  9061.       
  9062.     inttmpval = intbuf [ intxptr ] ; 
  9063.     intbuf [ intxptr ] = intbuf [ intptr ] ; 
  9064.     intbuf [ intptr ] = inttmpval ; 
  9065.     decr ( intptr ) ; 
  9066.     incr ( intxptr ) ; 
  9067.   } 
  9068.  
  9069.  
  9070. }
  9071. void
  9072. #ifdef STDC
  9073. zadddatabasecite (citenumber * newcite ) 
  9074. #else
  9075. zadddatabasecite ( newcite ) 
  9076. citenumber * newcite ; 
  9077. #endif
  9078. {checkciteoverflow ( *newcite ) ; 
  9079.   checkfieldoverflow ( numfields * *newcite ) ; 
  9080.   citelist [ *newcite ] = hashtext [ citeloc ] ; 
  9081.   ilkinfo [ citeloc ] = *newcite ; 
  9082.   ilkinfo [ lcciteloc ] = citeloc ; 
  9083.   incr ( *newcite ) ; 
  9084. #ifdef STDC
  9085. boolean zfindcitelocsforthisc (strnumber citestr ) 
  9086. #else
  9087. boolean zfindcitelocsforthisc ( citestr ) 
  9088. strnumber citestr ; 
  9089. #endif
  9090. {register boolean Result; exbufptr = 0 ; 
  9091.   tmpptr = strstart [ citestr ] ; 
  9092.   tmpendptr = strstart [ citestr + 1 ] ; 
  9093.   while ( ( tmpptr < tmpendptr ) ) {
  9094.       
  9095.     exbuf [ exbufptr ] = strpool [ tmpptr ] ; 
  9096.     incr ( exbufptr ) ; 
  9097.     incr ( tmpptr ) ; 
  9098.   } 
  9099.   citeloc = strlookup ( exbuf , 0 , ( strstart [ citestr + 1 ] - strstart [ 
  9100.   citestr ] ) , 9 , false ) ; 
  9101.   citehashfound = hashfound ; 
  9102.   lowercase ( exbuf , 0 , ( strstart [ citestr + 1 ] - strstart [ citestr ] ) 
  9103.   ) ; 
  9104.   lcciteloc = strlookup ( exbuf , 0 , ( strstart [ citestr + 1 ] - strstart [ 
  9105.   citestr ] ) , 10 , false ) ; 
  9106.   if ( ( hashfound ) ) 
  9107.   Result = true ; 
  9108.   else Result = false ; 
  9109.   return(Result) ; 
  9110.  
  9111.  
  9112. }
  9113. void
  9114. #ifdef STDC
  9115. zswap (citenumber swap1 ,citenumber swap2 ) 
  9116. #else
  9117. zswap ( swap1 , swap2 ) 
  9118. citenumber swap1 , swap2 ; 
  9119. #endif
  9120. {citenumber innocentbystander  ; 
  9121.   innocentbystander = citeinfo [ swap2 ] ; 
  9122.   citeinfo [ swap2 ] = citeinfo [ swap1 ] ; 
  9123.   citeinfo [ swap1 ] = innocentbystander ; 
  9124. #ifdef STDC
  9125. boolean zlessthan (citenumber arg1 ,citenumber arg2 ) 
  9126. #else
  9127. boolean zlessthan ( arg1 , arg2 ) 
  9128. citenumber arg1 , arg2 ; 
  9129. #endif
  9130. {/* 10 */ register boolean Result; integer charptr  ; 
  9131.   strentloc ptr1, ptr2  ; 
  9132.   ASCIIcode char1, char2  ; 
  9133.   ptr1 = arg1 * numentstrs + sortkeynum ; 
  9134.   ptr2 = arg2 * numentstrs + sortkeynum ; 
  9135.   charptr = 0 ; 
  9136.   while ( true ) {
  9137.       
  9138.     char1 = entrystrs [ ptr1 ] [ charptr ] ; 
  9139.     char2 = entrystrs [ ptr2 ] [ charptr ] ; 
  9140.     if ( ( char1 == 127 ) ) 
  9141.     if ( ( char2 == 127 ) ) 
  9142.     if ( ( arg1 < arg2 ) ) 
  9143.     {
  9144.       Result = true ; 
  9145.       goto lab10 ; 
  9146.     } 
  9147.     else if ( ( arg1 > arg2 ) ) 
  9148.     {
  9149.       Result = false ; 
  9150.       goto lab10 ; 
  9151.     } 
  9152.     else {
  9153.     
  9154.       {
  9155.     (void) ReverseFPuts( logfile ,  "Duplicate sort key" ) ; 
  9156.     (void) FPrintFStdErr(  "Duplicate sort key" ) ; 
  9157.       } 
  9158.       printconfusion () ; 
  9159.       longjmp(jmp9998,1) ; 
  9160.     } 
  9161.     else {
  9162.     
  9163.       Result = true ; 
  9164.       goto lab10 ; 
  9165.     } 
  9166.     else if ( ( char2 == 127 ) ) 
  9167.     {
  9168.       Result = false ; 
  9169.       goto lab10 ; 
  9170.     } 
  9171.     else if ( ( char1 < char2 ) ) 
  9172.     {
  9173.       Result = true ; 
  9174.       goto lab10 ; 
  9175.     } 
  9176.     else if ( ( char1 > char2 ) ) 
  9177.     {
  9178.       Result = false ; 
  9179.       goto lab10 ; 
  9180.     } 
  9181.     incr ( charptr ) ; 
  9182.   } 
  9183.   lab10: ; 
  9184.   return(Result) ; 
  9185.  
  9186.  
  9187. }
  9188. void
  9189. #ifdef STDC
  9190. zquicksort (citenumber leftend ,citenumber rightend ) 
  9191. #else
  9192. zquicksort ( leftend , rightend ) 
  9193. citenumber leftend , rightend ; 
  9194. #endif
  9195. {/* 24 */ citenumber left, right  ; 
  9196.   citenumber insertptr  ; 
  9197.   citenumber middle  ; 
  9198.   citenumber partition  ; 
  9199.     ;
  9200. #ifdef TRACE
  9201.   {
  9202.     (void) FPrintF( logfile , "%s%ld%s%ld\r",  "Sorting " , (long)leftend , " through " , (long)rightend ) ; 
  9203.   } 
  9204. #endif /* TRACE */
  9205.   if ( ( rightend - leftend < 10 ) ) 
  9206.   {
  9207.     {register integer for_end; insertptr = leftend + 1 ; for_end = rightend 
  9208.     ; if ( insertptr <= for_end) do 
  9209.       {
  9210.     {register integer for_end; right = insertptr ; for_end = leftend + 1 
  9211.     ; if ( right >= for_end) do 
  9212.       {
  9213.         if ( ( lessthan ( citeinfo [ right - 1 ] , citeinfo [ right ] ) ) 
  9214.         ) 
  9215.         goto lab24 ; 
  9216.         swap ( right - 1 , right ) ; 
  9217.       } 
  9218.     while ( right-- > for_end ) ; } 
  9219.     lab24: ; 
  9220.       } 
  9221.     while ( insertptr++ < for_end ) ; } 
  9222.   } 
  9223.   else {
  9224.       
  9225.     {
  9226.       left = leftend + 4 ; 
  9227.       middle = ( leftend + rightend ) / 2 ; 
  9228.       right = rightend - 4 ; 
  9229.       if ( ( lessthan ( citeinfo [ left ] , citeinfo [ middle ] ) ) ) 
  9230.       if ( ( lessthan ( citeinfo [ middle ] , citeinfo [ right ] ) ) ) 
  9231.       swap ( leftend , middle ) ; 
  9232.       else if ( ( lessthan ( citeinfo [ left ] , citeinfo [ right ] ) ) ) 
  9233.       swap ( leftend , right ) ; 
  9234.       else swap ( leftend , left ) ; 
  9235.       else if ( ( lessthan ( citeinfo [ right ] , citeinfo [ middle ] ) ) ) 
  9236.       swap ( leftend , middle ) ; 
  9237.       else if ( ( lessthan ( citeinfo [ right ] , citeinfo [ left ] ) ) ) 
  9238.       swap ( leftend , right ) ; 
  9239.       else swap ( leftend , left ) ; 
  9240.     } 
  9241.     {
  9242.       partition = citeinfo [ leftend ] ; 
  9243.       left = leftend + 1 ; 
  9244.       right = rightend ; 
  9245.       do {
  9246.       while ( ( lessthan ( citeinfo [ left ] , partition ) ) ) incr ( 
  9247.     left ) ; 
  9248.     while ( ( lessthan ( partition , citeinfo [ right ] ) ) ) decr ( right 
  9249.     ) ; 
  9250.     if ( ( left < right ) ) 
  9251.     {
  9252.       swap ( left , right ) ; 
  9253.       incr ( left ) ; 
  9254.       decr ( right ) ; 
  9255.     } 
  9256.       } while ( ! ( ( left == right + 1 ) ) ) ; 
  9257.       swap ( leftend , right ) ; 
  9258.       quicksort ( leftend , right - 1 ) ; 
  9259.       quicksort ( left , rightend ) ; 
  9260.     } 
  9261.   } 
  9262. #include "BibTeX.h"
  9263. #include "BibTeX.p"
  9264. #include "globals.h"
  9265. #include "coerce.h"
  9266.  
  9267. void printanewline (void) {
  9268.     (void) FPutC('\r', logfile );
  9269.   (void) FPutC('\r');
  9270.   
  9271.       #ifdef GIVE_UP_TIME
  9272.      give_up_some_time();
  9273.     #endif
  9274. }
  9275. void markwarning (void) {
  9276.     if ( ( history == 1 ) ) 
  9277.   incr ( errcount ) ; 
  9278.   else if ( ( history == 0 ) ) 
  9279.   {
  9280.     history = 1 ; 
  9281.     errcount = 1 ; 
  9282.   } 
  9283.  
  9284.  
  9285. }
  9286. void markerror (void) {
  9287.     if ( ( history < 2 ) ) 
  9288.   {
  9289.     history = 2 ; 
  9290.     errcount = 1 ; 
  9291.   } 
  9292.   else incr ( errcount ) ; 
  9293.  
  9294.  
  9295. }
  9296. void markfatal (void) {
  9297.     history = 3 ; 
  9298.  
  9299.  
  9300. }
  9301. void printoverflow (void) {
  9302.     { 
  9303.     (void) ReverseFPuts( logfile ,  "Sorry---you've exceeded BibTeX's " ) ; 
  9304.     (void) FPrintFStdErr(  "Sorry---you've exceeded BibTeX's " ) ; 
  9305.   } 
  9306.   markfatal () ; 
  9307.  
  9308.  
  9309. }
  9310. void printconfusion (void) {
  9311.     { 
  9312.     (void) FPrintF( logfile , "%s\r",  "---this can't happen" ) ; 
  9313.     (void) FPrintFStdErr( "%s\r",  "---this can't happen" ) ; 
  9314.   } 
  9315.   {
  9316.     (void) FPrintF( logfile , "%s\r",  "*Please notify the BibTeX maintainer*" ) ; 
  9317.     (void) FPrintFStdErr( "%s\r",  "*Please notify the BibTeX maintainer*" ) ; 
  9318.   } 
  9319.   markfatal () ; 
  9320.  
  9321.  
  9322. }
  9323. void bufferoverflow (void) {
  9324.     { 
  9325.     printoverflow () ; 
  9326.     {
  9327.       (void) FPrintF( logfile , "%s%ld\r",  "buffer size " , (long)bufsize ) ; 
  9328.       (void) FPrintFStdErr( "%s%ld\r",  "buffer size " , (long)bufsize ) ; 
  9329.     } 
  9330.     longjmp(jmp9998,1) ; 
  9331.   } 
  9332. #ifdef STDC
  9333. boolean zinputln (alphafile f ) 
  9334. #else
  9335. boolean zinputln ( f ) 
  9336. alphafile f ; 
  9337. #endif
  9338. {/* 15 */ register boolean Result; last = 0 ; 
  9339.   if ( eof ( f ) ) 
  9340.   Result = false ; 
  9341.   else {
  9342.       
  9343.     lineread ( f , bufsize ) ; 
  9344.     if ( last >= bufsize ) 
  9345.     {
  9346.       printoverflow () ; 
  9347.       {
  9348.     (void) FPrintF( logfile , "%s%ld\r",  "buffer size " , (long)bufsize ) ; 
  9349.     (void) FPrintFStdErr( "%s%ld\r",  "buffer size " , (long)bufsize ) ; 
  9350.       } 
  9351.       longjmp(jmp9998,1) ; 
  9352.     } 
  9353.     while ( ( last > 0 ) ) if ( lexclass [ buffer [ last - 1 ] ] == 1 ) 
  9354.     decr ( last ) ; 
  9355.     else goto lab15 ; 
  9356.     lab15: Result = true ; 
  9357.   } 
  9358.   return(Result) ; 
  9359.  
  9360.  
  9361. }
  9362.  
  9363. void
  9364. #ifdef STDC
  9365. zoutpoolstr (alphafile f ,strnumber s ) 
  9366. #else
  9367. zoutpoolstr ( f , s ) 
  9368. alphafile f ; 
  9369. strnumber s ; 
  9370. #endif
  9371. {
  9372.     poolpointer i  ; 
  9373.   if ( ( ( s < 0 ) || ( s >= strptr + 3 ) || ( s >= maxstrings ) ) ) 
  9374.   {
  9375.     {
  9376.       (void) FPrintF( logfile , "%s%ld",  "Illegal string number:" , (long)s ) ; 
  9377.       (void) FPrintFStdErr( "%s%ld",  "Illegal string number:" , (long)s ) ; 
  9378.     } 
  9379.     printconfusion () ; 
  9380.     longjmp(jmp9998,1) ; 
  9381.   } 
  9382.   {register integer for_end; i = strstart [ s ] ; for_end = strstart [ s + 1 
  9383.   ] - 1 ; if ( i <= for_end) do 
  9384.     (void) FPutC( xchr [ strpool [ i ] ] ,  f );
  9385.   while ( i++ < for_end ) ; } 
  9386.  
  9387.  
  9388. }
  9389. void
  9390. #ifdef STDC
  9391. zprintapoolstr (strnumber s ) 
  9392. #else
  9393. zprintapoolstr ( s ) 
  9394. strnumber s ; 
  9395. #endif
  9396. {
  9397.  outpoolstr ( stdout , s ) ; 
  9398.   outpoolstr ( logfile , s ) ; 
  9399.  
  9400.  
  9401. }
  9402. void pooloverflow (void) {
  9403.     { 
  9404.     printoverflow () ; 
  9405.     {
  9406.       (void) FPrintF( logfile , "%s%ld\r",  "pool size " , (long)poolsize ) ; 
  9407.       (void) FPrintFStdErr( "%s%ld\r",  "pool size " , (long)poolsize ) ; 
  9408.     } 
  9409.     longjmp(jmp9998,1) ; 
  9410.   } 
  9411.  
  9412.  
  9413. }
  9414. void filenmsizeoverflow (void) {
  9415.     { 
  9416.     printoverflow () ; 
  9417.     {
  9418.       (void) FPrintF( logfile , "%s%ld\r",  "file name size " , (long)1024 ) ; 
  9419.       (void) FPrintFStdErr( "%s%ld\r",  "file name size " , (long)1024 ) ; 
  9420.     } 
  9421.     longjmp(jmp9998,1) ; 
  9422.   } 
  9423.  
  9424.  
  9425. }
  9426. void
  9427. #ifdef STDC
  9428. zouttoken (alphafile f ) 
  9429. #else
  9430. zouttoken ( f ) 
  9431. alphafile f ; 
  9432. #endif
  9433. {bufpointer i  ; 
  9434.   i = bufptr1 ; 
  9435.   while ( ( i < bufptr2 ) ) {
  9436.       
  9437.     (void) FPutC( xchr [ buffer [ i ] ] ,  f );
  9438.     incr ( i ) ; 
  9439.   } 
  9440.  
  9441.  
  9442. }
  9443. void printatoken (void) {
  9444.     outtoken ( stdout ) ; 
  9445.   outtoken ( logfile ) ; 
  9446.  
  9447.  
  9448. }
  9449. void printbadinputline (void) {
  9450.     bufpointer bfptr  ; 
  9451.   {
  9452.     (void) ReverseFPuts( logfile ,  " : " ) ; 
  9453.     (void) FPrintFStdErr(  " : " ) ; 
  9454.   } 
  9455.   bfptr = 0 ; 
  9456.   while ( ( bfptr < bufptr2 ) ) {
  9457.       
  9458.     if ( ( lexclass [ buffer [ bfptr ] ] == 1 ) ) 
  9459.     {
  9460.       (void) FPutC( xchr [ 32 ] , logfile );
  9461.       (void) FPutC( xchr [ 32 ] );
  9462.     } 
  9463.     else {
  9464.     
  9465.       (void) FPutC( xchr [ buffer [ bfptr ] ] , logfile );
  9466.       (void) FPutC( xchr [ buffer [ bfptr ] ] );
  9467.     } 
  9468.     incr ( bfptr ) ; 
  9469.   } 
  9470.   printanewline () ; 
  9471.   {
  9472.     (void) ReverseFPuts( logfile ,  " : " ) ; 
  9473.     (void) FPrintFStdErr(  " : " ) ; 
  9474.   } 
  9475.   bfptr = 0 ; 
  9476.   while ( ( bfptr < bufptr2 ) ) {
  9477.       
  9478.     {
  9479.       (void) FPutC( xchr [ 32 ] , logfile );
  9480.       (void) FPutC( xchr [ 32 ] );
  9481.     } 
  9482.     incr ( bfptr ) ; 
  9483.   } 
  9484.   bfptr = bufptr2 ; 
  9485.   while ( ( bfptr < last ) ) {
  9486.       
  9487.     if ( ( lexclass [ buffer [ bfptr ] ] == 1 ) ) 
  9488.     {
  9489.       (void) FPutC( xchr [ 32 ] , logfile );
  9490.       (void) FPutC( xchr [ 32 ] );
  9491.     } 
  9492.     else {
  9493.     
  9494.       (void) FPutC( xchr [ buffer [ bfptr ] ] , logfile );
  9495.       (void) FPutC( xchr [ buffer [ bfptr ] ] );
  9496.     } 
  9497.     incr ( bfptr ) ; 
  9498.   } 
  9499.   printanewline () ; 
  9500.   bfptr = 0 ; 
  9501.   while ( ( ( bfptr < bufptr2 ) && ( lexclass [ buffer [ bfptr ] ] == 1 ) ) ) 
  9502.   incr ( bfptr ) ; 
  9503.   if ( ( bfptr == bufptr2 ) ) 
  9504.   {
  9505.     (void) FPrintF( logfile , "%s\r",  "(Error may have been on previous line)" ) ; 
  9506.     (void) FPrintFStdErr( "%s\r",  "(Error may have been on previous line)" ) ; 
  9507.   } 
  9508.   markerror () ; 
  9509.  
  9510.  
  9511. }
  9512. void printskippingwhateve (void) {
  9513.     { 
  9514.     (void) ReverseFPuts( logfile ,  "I'm skipping whatever remains of this " ) ; 
  9515.     (void) FPrintFStdErr(  "I'm skipping whatever remains of this " ) ; 
  9516.   } 
  9517.  
  9518.  
  9519. }
  9520. void samtoolongfilenamepr (void) {
  9521.     (void) FPrintFStdErr(  "File name `" ) ; 
  9522.   nameptr = 0 ; 
  9523.   while ( ( nameptr < auxnamelength ) ) {
  9524.       
  9525.     (void) FPutC( nameoffile [ nameptr ] );
  9526.     incr ( nameptr ) ; 
  9527.   } 
  9528.   (void) FPrintFStdErr( "%s\r",  "' is too long" ) ; 
  9529.  
  9530.  
  9531. }
  9532. void samwrongfilenameprin (void) {
  9533.     (void) FPrintFStdErr(  "I couldn't open file name `" ) ; 
  9534.   nameptr = 0 ; 
  9535.   while ( ( nameptr < namelength ) ) {
  9536.       
  9537.     (void) FPutC( nameoffile [ nameptr ] );
  9538.     incr ( nameptr ) ; 
  9539.   } 
  9540.   (void) FPrintFStdErr( "%c\r",  '\'' ) ; 
  9541.  
  9542.  
  9543. }
  9544. void printauxname (void) {
  9545.     printapoolstr ( auxlist [ auxptr ] ) ; 
  9546.   printanewline () ; 
  9547.  
  9548.  
  9549. }
  9550. void auxerrprint (void) {
  9551.     { 
  9552.     (void) FPrintF( logfile , "%s%ld%s",  "---line " , (long)auxlnstack [ auxptr ] , " of file " ) ; 
  9553.     (void) FPrintFStdErr( "%s%ld%s",  "---line " , (long)auxlnstack [ auxptr ] , " of file " ) ; 
  9554.   } 
  9555.   printauxname () ; 
  9556.   printbadinputline () ; 
  9557.   printskippingwhateve () ; 
  9558.   {
  9559.     (void) FPrintF( logfile , "%s\r",  "command" ) ; 
  9560.     (void) FPrintFStdErr( "%s\r",  "command" ) ; 
  9561.   } 
  9562.  
  9563.  
  9564. }
  9565. void
  9566. #ifdef STDC
  9567. zauxerrillegalanother (integer cmdnum ) 
  9568. #else
  9569. zauxerrillegalanother ( cmdnum ) 
  9570. integer cmdnum ; 
  9571. #endif
  9572. {{
  9573.     
  9574.     (void) ReverseFPuts( logfile ,  "Illegal, another \\bib" ) ; 
  9575.     (void) FPrintFStdErr(  "Illegal, another \\bib" ) ; 
  9576.   } 
  9577.   switch ( ( cmdnum ) ) 
  9578.   {case 0 : 
  9579.     {
  9580.       (void) ReverseFPuts( logfile ,  "data" ) ; 
  9581.       (void) FPrintFStdErr(  "data" ) ; 
  9582.     } 
  9583.     break ; 
  9584.   case 1 : 
  9585.     {
  9586.       (void) ReverseFPuts( logfile ,  "style" ) ; 
  9587.       (void) FPrintFStdErr(  "style" ) ; 
  9588.     } 
  9589.     break ; 
  9590.     default: 
  9591.     {
  9592.       {
  9593.     (void) ReverseFPuts( logfile ,  "Illegal auxiliary-file command" ) ; 
  9594.     (void) FPrintFStdErr(  "Illegal auxiliary-file command" ) ; 
  9595.       } 
  9596.       printconfusion () ; 
  9597.       longjmp(jmp9998,1) ; 
  9598.     } 
  9599.     break ; 
  9600.   } 
  9601.   {
  9602.     (void) ReverseFPuts( logfile ,  " command" ) ; 
  9603.     (void) FPrintFStdErr(  " command" ) ; 
  9604.   } 
  9605.  
  9606.  
  9607. }
  9608. void auxerrnorightbracepr (void) {
  9609.     { 
  9610.     (void) FPrintF( logfile , "%s%c%c",  "No \"" , xchr [ 125 ] , '"' ) ; 
  9611.     (void) FPrintFStdErr( "%s%c%c",  "No \"" , xchr [ 125 ] , '"' ) ; 
  9612.   } 
  9613.  
  9614.  
  9615. }
  9616. void auxerrstuffafterrigh (void) {
  9617.     { 
  9618.     (void) FPrintF( logfile , "%s%c%c",  "Stuff after \"" , xchr [ 125 ] , '"' ) ; 
  9619.     (void) FPrintFStdErr( "%s%c%c",  "Stuff after \"" , xchr [ 125 ] , '"' ) ; 
  9620.   } 
  9621.  
  9622.  
  9623. }
  9624. void auxerrwhitespaceinar (void) {
  9625.     { 
  9626.     (void) ReverseFPuts( logfile ,  "White space in argument" ) ; 
  9627.     (void) FPrintFStdErr(  "White space in argument" ) ; 
  9628.   } 
  9629.  
  9630.  
  9631. }
  9632. void printbibname (void) {
  9633.     printapoolstr ( biblist [ bibptr ] ) ; 
  9634.   printapoolstr ( sbibextension ) ; 
  9635.   printanewline () ; 
  9636.  
  9637.  
  9638. }
  9639. void printbstname (void) {
  9640.     printapoolstr ( bststr ) ; 
  9641.   printapoolstr ( sbstextension ) ; 
  9642.   printanewline () ; 
  9643.  
  9644.  
  9645. }
  9646. void hashciteconfusion (void) {
  9647.     { 
  9648.     {
  9649.       (void) ReverseFPuts( logfile ,  "Cite hash error" ) ; 
  9650.       (void) FPrintFStdErr(  "Cite hash error" ) ; 
  9651.     } 
  9652.     printconfusion () ; 
  9653.     longjmp(jmp9998,1) ; 
  9654.   } 
  9655.  
  9656.  
  9657. }
  9658. void
  9659. #ifdef STDC
  9660. zcheckciteoverflow (citenumber lastcite ) 
  9661. #else
  9662. zcheckciteoverflow ( lastcite ) 
  9663. citenumber lastcite ; 
  9664. #endif
  9665. {if ( ( lastcite == maxcites ) ) 
  9666.   {
  9667.     printapoolstr ( hashtext [ citeloc ] ) ; 
  9668.     {
  9669.       (void) FPrintF( logfile , "%s\r",  " is the key:" ) ; 
  9670.       (void) FPrintFStdErr( "%s\r",  " is the key:" ) ; 
  9671.     } 
  9672.     {
  9673.       printoverflow () ; 
  9674.       {
  9675.     (void) FPrintF( logfile , "%s%ld\r",  "number of cite keys " , (long)maxcites ) ; 
  9676.     (void) FPrintFStdErr( "%s%ld\r",  "number of cite keys " , (long)maxcites ) ; 
  9677.       } 
  9678.       longjmp(jmp9998,1) ; 
  9679.     } 
  9680.   } 
  9681.  
  9682.  
  9683. }
  9684. void auxend1errprint (void) {
  9685.     { 
  9686.     (void) ReverseFPuts( logfile ,  "I found no " ) ; 
  9687.     (void) FPrintFStdErr(  "I found no " ) ; 
  9688.   } 
  9689.  
  9690.  
  9691. }
  9692. void auxend2errprint (void) {
  9693.     { 
  9694.     (void) ReverseFPuts( logfile ,  "---while reading file " ) ; 
  9695.     (void) FPrintFStdErr(  "---while reading file " ) ; 
  9696.   } 
  9697.   printauxname () ; 
  9698.   markerror () ; 
  9699.  
  9700.  
  9701. }
  9702. void bstlnnumprint (void) {
  9703.     { 
  9704.     (void) FPrintF( logfile , "%s%ld%s",  "--line " , (long)bstlinenum , " of file " ) ; 
  9705.     (void) FPrintFStdErr( "%s%ld%s",  "--line " , (long)bstlinenum , " of file " ) ; 
  9706.   } 
  9707.   printbstname () ; 
  9708.  
  9709.  
  9710. }
  9711. void bsterrprintandlookfo (void) {
  9712.     { 
  9713.     (void) FPutC( '-' , logfile );
  9714.     (void) FPutC( '-' );
  9715.   } 
  9716.   bstlnnumprint () ; 
  9717.   printbadinputline () ; 
  9718.   while ( ( last != 0 ) ) if ( ( ! inputln ( bstfile ) ) ) 
  9719.   longjmp(jmp32,1) ; 
  9720.   else incr ( bstlinenum ) ; 
  9721.   bufptr2 = last ; 
  9722.  
  9723.  
  9724. }
  9725. void bstwarnprint (void) {
  9726.     bstlnnumprint () ; 
  9727.   markwarning () ; 
  9728.  
  9729.  
  9730. }
  9731. void eatbstprint (void) {
  9732.     { 
  9733.     (void) ReverseFPuts( logfile ,  "Illegal end of style file in command: " ) ; 
  9734.     (void) FPrintFStdErr(  "Illegal end of style file in command: " ) ; 
  9735.   } 
  9736.  
  9737.  
  9738. }
  9739. void unknwnfunctionclassc (void) {
  9740.     { 
  9741.     {
  9742.       (void) ReverseFPuts( logfile ,  "Unknown function class" ) ; 
  9743.       (void) FPrintFStdErr(  "Unknown function class" ) ; 
  9744.     } 
  9745.     printconfusion () ; 
  9746.     longjmp(jmp9998,1) ; 
  9747.   } 
  9748.  
  9749.  
  9750. }
  9751. void
  9752. #ifdef STDC
  9753. zprintfnclass (hashloc fnloc ) 
  9754. #else
  9755. zprintfnclass ( fnloc ) 
  9756. hashloc fnloc ; 
  9757. #endif
  9758. {switch ( ( fntype [ fnloc ] ) ) 
  9759.   {case 0 : 
  9760.     {
  9761.       (void) ReverseFPuts( logfile ,  "built-in" ) ; 
  9762.       (void) FPrintFStdErr(  "built-in" ) ; 
  9763.     } 
  9764.     break ; 
  9765.   case 1 : 
  9766.     {
  9767.       (void) ReverseFPuts( logfile ,  "wizard-defined" ) ; 
  9768.       (void) FPrintFStdErr(  "wizard-defined" ) ; 
  9769.     } 
  9770.     break ; 
  9771.   case 2 : 
  9772.     {
  9773.       (void) ReverseFPuts( logfile ,  "integer-literal" ) ; 
  9774.       (void) FPrintFStdErr(  "integer-literal" ) ; 
  9775.     } 
  9776.     break ; 
  9777.   case 3 : 
  9778.     {
  9779.       (void) ReverseFPuts( logfile ,  "string-literal" ) ; 
  9780.       (void) FPrintFStdErr(  "string-literal" ) ; 
  9781.     } 
  9782.     break ; 
  9783.   case 4 : 
  9784.     {
  9785.       (void) ReverseFPuts( logfile ,  "field" ) ; 
  9786.       (void) FPrintFStdErr(  "field" ) ; 
  9787.     } 
  9788.     break ; 
  9789.   case 5 : 
  9790.     {
  9791.       (void) ReverseFPuts( logfile ,  "integer-entry-variable" ) ; 
  9792.       (void) FPrintFStdErr(  "integer-entry-variable" ) ; 
  9793.     } 
  9794.     break ; 
  9795.   case 6 : 
  9796.     {
  9797.       (void) ReverseFPuts( logfile ,  "string-entry-variable" ) ; 
  9798.       (void) FPrintFStdErr(  "string-entry-variable" ) ; 
  9799.     } 
  9800.     break ; 
  9801.   case 7 : 
  9802.     {
  9803.       (void) ReverseFPuts( logfile ,  "integer-global-variable" ) ; 
  9804.       (void) FPrintFStdErr(  "integer-global-variable" ) ; 
  9805.     } 
  9806.     break ; 
  9807.   case 8 : 
  9808.     {
  9809.       (void) ReverseFPuts( logfile ,  "string-global-variable" ) ; 
  9810.       (void) FPrintFStdErr(  "string-global-variable" ) ; 
  9811.     } 
  9812.     break ; 
  9813.     default: 
  9814.     unknwnfunctionclassc () ; 
  9815.     break ; 
  9816.   } 
  9817. #ifdef TRACE
  9818. void
  9819. #ifdef STDC
  9820. ztraceprfnclass (hashloc fnloc ) 
  9821. #else
  9822. ztraceprfnclass ( fnloc ) 
  9823. hashloc fnloc ; 
  9824. #endif
  9825. {
  9826.     switch ( ( fntype [ fnloc ] ) ) 
  9827.   {case 0 : 
  9828.     {
  9829.       (void) ReverseFPuts( logfile ,  "built-in" ) ; 
  9830.     } 
  9831.     break ; 
  9832.   case 1 : 
  9833.     {
  9834.       (void) ReverseFPuts( logfile ,  "wizard-defined" ) ; 
  9835.     } 
  9836.     break ; 
  9837.   case 2 : 
  9838.     {
  9839.       (void) ReverseFPuts( logfile ,  "integer-literal" ) ; 
  9840.     } 
  9841.     break ; 
  9842.   case 3 : 
  9843.     {
  9844.       (void) ReverseFPuts( logfile ,  "string-literal" ) ; 
  9845.     } 
  9846.     break ; 
  9847.   case 4 : 
  9848.     {
  9849.       (void) ReverseFPuts( logfile ,  "field" ) ; 
  9850.     } 
  9851.     break ; 
  9852.   case 5 : 
  9853.     {
  9854.       (void) ReverseFPuts( logfile ,  "integer-entry-variable" ) ; 
  9855.     } 
  9856.     break ; 
  9857.   case 6 : 
  9858.     {
  9859.       (void) ReverseFPuts( logfile ,  "string-entry-variable" ) ; 
  9860.     } 
  9861.     break ; 
  9862.   case 7 : 
  9863.     {
  9864.       (void) ReverseFPuts( logfile ,  "integer-global-variable" ) ; 
  9865.     } 
  9866.     break ; 
  9867.   case 8 : 
  9868.     {
  9869.       (void) ReverseFPuts( logfile ,  "string-global-variable" ) ; 
  9870.     } 
  9871.     break ; 
  9872.     default: 
  9873.     unknwnfunctionclassc () ; 
  9874.     break ; 
  9875.   } 
  9876. #endif /* TRACE */
  9877. void idscanningconfusion (void) {
  9878.     { 
  9879.     {
  9880.       (void) ReverseFPuts( logfile ,  "Identifier scanning error" ) ; 
  9881.       (void) FPrintFStdErr(  "Identifier scanning error" ) ; 
  9882.     } 
  9883.     printconfusion () ; 
  9884.     longjmp(jmp9998,1) ; 
  9885.   } 
  9886.  
  9887.  
  9888. }
  9889. void bstidprint (void) {
  9890.     if ( ( scanresult == 0 ) ) 
  9891.   {
  9892.     (void) FPrintF( logfile , "%c%c%s%ld",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" begins identifier, (long)command: " ) ; 
  9893.     (void) FPrintFStdErr( "%c%c%s%ld",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" begins identifier, (long)command: " ) ; 
  9894.   } 
  9895.   else if ( ( scanresult == 2 ) ) 
  9896.   {
  9897.     (void) FPrintF( logfile , "%c%c%s%ld",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows identifier, (long)command: " ) ; 
  9898.     (void) FPrintFStdErr( "%c%c%s%ld",  '"' , xchr [ buffer [ bufptr2 ] ] ,     "\" immediately follows identifier, (long)command: " ) ; 
  9899.   } 
  9900.   else idscanningconfusion () ; 
  9901.  
  9902.  
  9903. }
  9904. void bstleftbraceprint (void) {
  9905.     { 
  9906.     (void) FPrintF( logfile , "%c%c%s",  '"' , xchr [ 123 ] , "\" is missing in command: " ) ; 
  9907.     (void) FPrintFStdErr( "%c%c%s",  '"' , xchr [ 123 ] , "\" is missing in command: " ) ; 
  9908.   } 
  9909.  
  9910.  
  9911. }
  9912. void bstrightbraceprint (void) {
  9913.     { 
  9914.     (void) FPrintF( logfile , "%c%c%s",  '"' , xchr [ 125 ] , "\" is missing in command: " ) ; 
  9915.     (void) FPrintFStdErr( "%c%c%s",  '"' , xchr [ 125 ] , "\" is missing in command: " ) ; 
  9916.   } 
  9917.  
  9918.  
  9919. }
  9920. void
  9921. #ifdef STDC
  9922. zalreadyseenfunctionp (hashloc seenfnloc ) 
  9923. #else
  9924. zalreadyseenfunctionp ( seenfnloc ) 
  9925. hashloc seenfnloc ; 
  9926. #endif
  9927. {/* 10 */ printapoolstr ( hashtext [ seenfnloc ] ) ; 
  9928.   {
  9929.     (void) ReverseFPuts( logfile ,  " is already a type \"" ) ; 
  9930.     (void) FPrintFStdErr(  " is already a type \"" ) ; 
  9931.   } 
  9932.   printfnclass ( seenfnloc ) ; 
  9933.   {
  9934.     (void) FPrintF( logfile , "%s\r",  "\" function name" ) ; 
  9935.     (void) FPrintFStdErr( "%s\r",  "\" function name" ) ; 
  9936.   } 
  9937.   {
  9938.     bsterrprintandlookfo () ; 
  9939.     goto lab10 ; 
  9940.   } 
  9941.   lab10: ; 
  9942.  
  9943.  
  9944. }
  9945. void singlfnoverflow (void) {
  9946.     { 
  9947.     printoverflow () ; 
  9948.     {
  9949.       (void) FPrintF( logfile , "%s%ld\r",  "single function space " , (long)singlefnspace ) ; 
  9950.       (void) FPrintFStdErr( "%s%ld\r",  "single function space " , (long)singlefnspace ) ; 
  9951.     } 
  9952.     longjmp(jmp9998,1) ; 
  9953.   } 
  9954.  
  9955.  
  9956. }
  9957. void biblnnumprint (void) {
  9958.     { 
  9959.     (void) FPrintF( logfile , "%s%ld%s",  "--line " , (long)biblinenum , " of file " ) ; 
  9960.     (void) FPrintFStdErr( "%s%ld%s",  "--line " , (long)biblinenum , " of file " ) ; 
  9961.   } 
  9962.   printbibname () ; 
  9963.  
  9964.  
  9965. }
  9966. void biberrprint (void) {
  9967.     { 
  9968.     (void) FPutC( '-' , logfile );
  9969.     (void) FPutC( '-' );
  9970.   } 
  9971.   biblnnumprint () ; 
  9972.   printbadinputline () ; 
  9973.   printskippingwhateve () ; 
  9974.   if ( ( atbibcommand ) ) 
  9975.   {
  9976.     (void) FPrintF( logfile , "%s\r",  "command" ) ; 
  9977.     (void) FPrintFStdErr( "%s\r",  "command" ) ; 
  9978.   } 
  9979.   else {
  9980.       
  9981.     (void) FPrintF( logfile , "%s\r",  "entry" ) ; 
  9982.     (void) FPrintFStdErr( "%s\r",  "entry" ) ; 
  9983.   } 
  9984.  
  9985.  
  9986. }
  9987. void bibwarnprint (void) {
  9988.     biblnnumprint () ; 
  9989.   markwarning () ; 
  9990.  
  9991.  
  9992. }
  9993. void
  9994. #ifdef STDC
  9995. zcheckfieldoverflow (integer totalfields ) 
  9996. #else
  9997. zcheckfieldoverflow ( totalfields ) 
  9998. integer totalfields ; 
  9999. #endif
  10000. {if ( ( totalfields > maxfields ) ) 
  10001.   {
  10002.     {
  10003.       (void) FPrintF( logfile , "%ld%s\r",  (long)totalfields , " fields:" ) ; 
  10004.       (void) FPrintFStdErr( "%ld%s\r",  (long)totalfields , " fields:" ) ; 
  10005.     } 
  10006.     {
  10007.       printoverflow () ; 
  10008.       {
  10009.     (void) FPrintF( logfile , "%s%ld\r",  "total number of fields " , (long)maxfields ) ; 
  10010.     (void) FPrintFStdErr( "%s%ld\r",  "total number of fields " , (long)maxfields ) ; 
  10011.       } 
  10012.       longjmp(jmp9998,1) ; 
  10013.     } 
  10014.   } 
  10015.  
  10016.  
  10017. }
  10018. void eatbibprint (void) {
  10019.     /* 10 */ { 
  10020.     {
  10021.       (void) ReverseFPuts( logfile ,  "Illegal end of database file" ) ; 
  10022.       (void) FPrintFStdErr(  "Illegal end of database file" ) ; 
  10023.     } 
  10024.     biberrprint () ; 
  10025.     goto lab10 ; 
  10026.   } 
  10027.   lab10: ; 
  10028.  
  10029.  
  10030. }
  10031. void
  10032. #ifdef STDC
  10033. zbiboneoftwoprint (ASCIIcode char1 ,ASCIIcode char2 ) 
  10034. #else
  10035. zbiboneoftwoprint ( char1 , char2 ) 
  10036. ASCIIcode char1 , char2 ; 
  10037. #endif
  10038. {/* 10 */ {
  10039.     
  10040.     {
  10041.       (void) FPrintF( logfile , "%s%c%s%c%c",  "I was expecting a `" , xchr [ char1 ] , "' or a `" ,       xchr [ char2 ] , '\'' ) ; 
  10042.       (void) FPrintFStdErr( "%s%c%s%c%c",  "I was expecting a `" , xchr [ char1 ] , "' or a `" ,       xchr [ char2 ] , '\'' ) ; 
  10043.     } 
  10044.     biberrprint () ; 
  10045.     goto lab10 ; 
  10046.   } 
  10047.   lab10: ; 
  10048.  
  10049.  
  10050. }
  10051. void bibequalssignprint (void) {
  10052.     /* 10 */ { 
  10053.     {
  10054.       (void) FPrintF( logfile , "%s%c%c",  "I was expecting an \"" , xchr [ 61 ] , '"' ) ; 
  10055.       (void) FPrintFStdErr( "%s%c%c",  "I was expecting an \"" , xchr [ 61 ] , '"' ) ; 
  10056.     } 
  10057.     biberrprint () ; 
  10058.     goto lab10 ; 
  10059.   } 
  10060.   lab10: ; 
  10061.  
  10062.  
  10063. }
  10064. void bibunbalancedbracesp (void) {
  10065.     /* 10 */ { 
  10066.     {
  10067.       (void) ReverseFPuts( logfile ,  "Unbalanced braces" ) ; 
  10068.       (void) FPrintFStdErr(  "Unbalanced braces" ) ; 
  10069.     } 
  10070.     biberrprint () ; 
  10071.     goto lab10 ; 
  10072.   } 
  10073.   lab10: ; 
  10074.  
  10075.  
  10076. }
  10077. void bibfieldtoolongprint (void) {
  10078.     /* 10 */ { 
  10079.     {
  10080.       (void) FPrintF( logfile , "%s%ld%s",  "Your field is more than " , (long)bufsize , " characters" ) 
  10081.       ; 
  10082.       (void) FPrintFStdErr( "%s%ld%s",  "Your field is more than " , (long)bufsize , " characters" ) 
  10083.       ; 
  10084.     } 
  10085.     biberrprint () ; 
  10086.     goto lab10 ; 
  10087.   } 
  10088.   lab10: ; 
  10089.  
  10090.  
  10091. }
  10092. void macrowarnprint (void) {
  10093.     { 
  10094.     (void) ReverseFPuts( logfile ,  "Warning--string name \"" ) ; 
  10095.     (void) FPrintFStdErr(  "Warning--string name \"" ) ; 
  10096.   } 
  10097.   printatoken () ; 
  10098.   {
  10099.     (void) ReverseFPuts( logfile ,  "\" is " ) ; 
  10100.     (void) FPrintFStdErr(  "\" is " ) ; 
  10101.   } 
  10102.  
  10103. #pragma profile reset
  10104.